花了我一会儿才弄明白这一点。所以,我是answering my own question。sqldf,csv和包含逗号的字段
你有一些.csv,你想加载它fast,你想使用sqldf
包。你平时的代码被一些烦人的领域激怒了。示例:
1001, Amy,9:43:00, 99.2
1002,"Ben,Jr",9:43:00, 99.2
1003,"Ben,Sr",9:44:00, 99.3
此代码仅适用于* nix系统。
library(sqldf)
system("touch temp.csv")
system("echo '1001, Amy,9:43:00, 99.2\n1002,\"Ben,Jr\",9:43:00, 99.2\n1003,\"Ben,Sr\",9:44:00, 99.3' > temp.csv")
如果尝试
x <- read.csv.sql("temp.csv", header=FALSE)
R键读抱怨
Error in try({ :
RS-DBI driver: (RS_sqlite_import: ./temp.csv line 2 expected 4 columns of data but found 5)
的sqldf
- FAQ.13解决方案不起作用或者:
x <- read.csv.sql("temp.csv", filter = "tr -d '\"' ", header=FALSE)
此外,R合作mplains
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
line 1 did not have 5 elements
实际上,该过滤器仅删除双引号。
那么,该如何进行呢?
我已经澄清并改进了常见问题解答,并且在这里包含了一个带有链接库的Perl代码的gawk版本。 –
我最初已经把你和其他人混淆了,你必须在我修好这个名字之前看到它。 –