R语言导入txt文本报错:more columns than column names(列的数目比列的名字要多)问题解决
mergedata <- do.call("rbind",
lapply(dir,
function(x){ data = read.table(x,sep = "|",
colClasses="character",
header = T)
data$项目 <- unlist(strsplit(x,'/'))[length(unlist(strsplit(x,'/')))]
return(data)}
))
今天在用R批量导入TXT文件进行合并时(代码如上),报错:
Error in read.table(x, sep = "|", colClasses = "character", header = T) :
more columns than column names
在查看了帮助后,将各个参数逐一试了一下,将默认参数全部反选了一遍:
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
最终在修改到fileEncoding = ""
时突然想到会不会是编码问题,尝试令fileEncoding = "utf-8"
,竟然成功读取了!!!
修改后代码如下:
mergedata <- do.call("rbind",
lapply(dir,
function(x){ data = read.table(x,sep = "|",
colClasses="character",
fileEncoding = "utf-8",
header = T)
data$项目 <- unlist(strsplit(x,'/'))[length(unlist(strsplit(x,'/')))]
return(data)}
))