[R] read.csv and field containing single quotes
Rainer M Krug
r.m.krug at gmail.com
Tue Mar 27 14:23:04 CEST 2012
On 27/03/12 01:09, Benilton Carvalho wrote:
> I need to read in csv files, created by 3rd party, with fields
> containing single quotes (as shown below).
>
> "header1","header2","header3","header4"
> "field1r1","field2r1","field3r1","field4r1"
> "field1r2","field2r2","field3r2PartA), field3r2PartB Very" Long","field4r2"
> "field1r3","field2r3","field3r3","field4r3"
You could try under your OS, to
1) replace ", with ', (assuming that the csv does not contain any'
2) read into R with sep="\'"
If the file is huge, some in OS solution would be the best.
Cheers,
Rainer
>
>
> read.csv(filename, quote="\"'", header=TRUE) won't read the file
> represented above, unless the 3rd line has Very"" (double quotes)
> instead of Very" (single quotes)... and this is documented (scan() man
> page).
>
> Assuming that the creation of such csv files is something I'm not in a
> position to interfere with, are there (preferably, "all in R")
> suggestions on how to handle such task?
>
> For the moment, I'm using my poor man's solution (below), but any
> tricks that would simplify this task would be great.
>
> Thank you very much,
>
> benilton
>
>
> parser <- function(fname, header=TRUE, stringsAsFactors=FALSE){
> txt <- readLines(fname)
> txt <- gsub("^\"|\"$", "", txt)
> txt <- strsplit(txt, "\",\"")
> txt <- do.call(rbind, lapply(txt, function(x) gsub("\"", "\"\"", x)))
> if (header){
> nms <- txt[1,]
> txt <- txt[-1,]
> }
> txt <- as.data.frame(txt, stringsAsFactors=stringsAsFactors)
> if (header) names(txt) <- nms
> txt
> }
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
--
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany)
Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa
Tel : +33 - (0)9 53 10 27 44
Cell: +33 - (0)6 85 62 59 98
Fax : +33 - (0)9 58 10 27 44
Fax (D): +49 - (0)3 21 21 25 22 44
email: Rainer at krugs.de
Skype: RMkrug
More information about the R-help
mailing list