所以我试图根据R中的数据帧编写.csv文件,但由于某种原因我不断收到以下错误:
Error in .External2(C_writetable, x, file, nrow(x), p, rnames, sep, eol, :
unimplemented type 'list' in 'EncodeElement
这就是traceback()给出的内容:
5: write.table(df, file = "df.csv", col.names = NA,
sep = ",", dec = ".", qmethod = "double")
4: eval(expr, envir, enclos)
3: eval(expr, p)
2: eval.parent(Call)
1: write.csv(df, file = "df.csv")
任何解决方案?
答案 0 :(得分:30)
您也可以直接在R:
中强制数据帧my.df <- data.frame(lapply(old.df, as.character), stringsAsFactors=FALSE)
CAVEAT:这会将您的整个数据框强制转换为您指定的任何类型。例如,如果您想将数据框强制转换为数字,则可以替换“as.characater”。与&#39; as.numeric&#39;:
my.df <- data.frame(lapply(old.df, as.numeric), stringsAsFactors=FALSE)
答案 1 :(得分:20)
您的一个列是类型列表,因此data.frame不再是二维的,无法导出到二维csv文件。
如果您仍希望将列表存储在结果输出中,则可以先将其转换为JSON。因此它变成了一个“字符”类型的列,可以很容易地作为一列导出到csv。
答案 2 :(得分:3)
我只是遇到了同样的问题,而不是使用as.character()或as.numeric(),我使用了as.matrix(),它保留了我的字符变量字符,我的数字变量为数字,并输出.csv文件就像一场梦。