这个问题以前有人提出过,我也尝试过他们的建议,但我认为我的案例特别有趣。我用过 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'
这就是很棒的地方。请注意,消息显示“预期为‘a real’,得到了‘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
有人知道问题出在哪里吗?或者这只是一个错误?
最佳答案
read.csv2
还将小数点指示符从 .
更改为 ,
(参见 dec=","
).因此,这种格式的“真实”值看起来像 4,216
,而不是 4.216
。最好坚持 read.csv(..., sep=";")
read.csv("dataset.txt", sep=";", stringsAsFactors=FALSE, na.strings='NULL')
关于R 函数 read.csv 失败, "scan() expected ' 是一个真实的',得到......“消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48194416/