我试图从http://www.ercot.com/gridinfo/load/load_hist读取一堆文件,所有文件都使用read.csv正确读取,除了最后一个,2017年的文件 . 当我尝试用 read.csv
读取文件时,我收到以下错误:
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, : scan() expected 'a real', got '"8'
但是,我已使用Excel进行检查,文件中没有 "8
或 8
值 . 错误消息似乎很清楚,但我找不到 "8
或 8
,即使我读取0行( read.csv
函数的 nrows
参数),我也有同样的问题 .
hold2 <- read.csv(paste(PATH, "\\CSV\\", "native_load_2017.csv", sep=""), header=TRUE, sep=",", dec = ".", colClasses=c("character",rep("double",9)))
hold2 <- read.csv(paste(PATH, "\\CSV\\", "native_load_2017.csv", sep=""), header=TRUE, sep=",", dec = ".", colClasses=c("character",rep("double",9)), nrows=0)
此外,在文件的最后一行中,有些值不符合文件其余部分的格式 . 我想跳过最后一行,但 read.csv
函数中没有参数可以做到这一点 . 有什么工作吗?我正在考虑或使用类似的东西:
hold2 <- read.csv(paste(PATH, "\\CSV\\", "native_load_2017.csv", sep=""), header=TRUE, sep=",", dec = ".", colClasses=c("character",rep("double",9)), nrows=nrow(read.csv(paste(PATH, "\\CSV\\", "native_load_2017.csv", sep=""))-1))
有关如何做到这一点的任何想法?谢谢
1 回答
使用readr包
可以看到SCENT列被解析为字符(由于您记下的最后一行中值的格式不同) . 下面,将第一列指定为字符,将默认值指定为col_number()读取文件(注意:col_number()处理您所拥有的列中的逗号和小数点为double) .