好的,我正在尝试使用 this 方法将数据导入R,但我一直在收到错误:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
line 1 did not have 22 elements
这是我正在运行的脚本:
library(foreign)
setwd("/Library/A_Intel/")
filelist <-list.files()
#assuming tab separated values with a header
datalist = lapply(filelist, function(xx)read.table(xx, header=T, sep=";"))
#assuming the same header/columns for all files
datafr = do.call("rbind", datalist)
请记住,我的优先事项是:
感谢!!!
答案 0 :(得分:1)
您尝试阅读的其中一个文件与标题的列数相同。要读取此文件,您可能必须更改此文件的标头,或使用更合适的列分隔符。要查看导致问题的文件,请尝试以下操作:
datalist <- list()
for(filename in filelist){
cat(filename,'\n')
datalist[[filename]] <- read.table(filename, header = TRUE, sep = ';')
}
另一种选择是分别获取文件和标题的内容:
datalist[[filename]] <- read.table(filename, header = FALSE, sep = ';')
thisHeader <- readLines(filename, n=1)
## ... separate columns of thisHeader ...
colnames(datalist[[filename]]) <- processedHeader
如果无法让read.table
工作,您可以随时使用readLines
并手动提取文件内容(例如,使用strsplit
)。
答案 1 :(得分:1)
为了保持避免循环的精神,可以在加载所有数据之前进行初步的健全性检查
lapply(filelist, function(xx){
print (scan(xx, what = 'character', sep=";", nlines = 1))} )
(假设您的标题以';'分隔,可能不是这种情况)