此问题之前已经提出,我已经尝试了他们的建议,但我认为我的案例特别令人感兴趣。我使用过read.table,read.csv和read.csv2。无济于事。我选择了read.csv2,因为字段/变量用';'分隔,这是read.csv2的默认分隔符(虽然你可以看到我明确地将它设置为变通方法)
数据集的第一行是:
16/12/2006;17:24:00;4.216;0.418;234.840;18.400;0.000;1.000;17.000
我的read.csv2是:
foo <- read.csv2(“dataset.txt",sep=";",stringsAsFactors=FALSE,na.strings='NULL',colClasses=c(rep("character",2),rep("numeric",7)))
我希望将日期和时间值导入为字符串,并明确将其强制转换为日期和时间:
y <- as.Date(foo[,1],"%d/%m/%Y")
x <- strptime(foo[,2],"%H:%M:%S")
我的问题是我无法通过read.csv2。错误是:
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, : scan() expected 'a real', got '4.216'
这是很酷的。注意消息说“预期'真实',得到'4.216'”。伙计们,4.216是真实的。注意4.216确实是该行的第三个值。我也试过了:
foo <- read.csv2(“dataset.txt",sep=";",stringsAsFactors=FALSE,na.strings='NULL',colClasses=c(“character”,”character”,rep("numeric",7)))
我的R版本是R 3.4.1 GUI 1.70 El Capitan build
任何人都对问题是什么有任何想法?或者这只是一个错误?
答案 0 :(得分:2)
read.csv2
也会将小数点指标从.
更改为,
(请参阅dec=","
)。因此,&#34;真实&#34;此格式的值看起来像4,216
,而不是4.216
。最好坚持read.csv(..., sep=";")
read.csv("dataset.txt", sep=";", stringsAsFactors=FALSE, na.strings='NULL')