R函数read.csv失败,“scan()expect”是一个真实的“得到...”消息

时间:2018-01-10 19:03:47

标签: r csv read.csv

此问题之前已经提出,我已经尝试了他们的建议,但我认为我的案例特别令人感兴趣。我使用过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

任何人都对问题是什么有任何想法?或者这只是一个错误?

1 个答案:

答案 0 :(得分:2)

read.csv2也会将小数点指标从.更改为,(请参阅dec=",")。因此,&#34;真实&#34;此格式的值看起来像4,216,而不是4.216。最好坚持read.csv(..., sep=";")

read.csv("dataset.txt", sep=";", stringsAsFactors=FALSE, na.strings='NULL')