21

因此,我尝试基于 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")

有什么解决办法吗?

4

3 回答 3

31

您还可以直接在 R 中强制数据帧:

my.df <- data.frame(lapply(old.df, as.character), stringsAsFactors=FALSE)

CAVEAT:这会将您的整个数据框强制为您指定的任何类型。例如,如果你想强制你的数据框编号,你可以用'as.numeric'替换'as.characater':

 my.df <- data.frame(lapply(old.df, as.numeric), stringsAsFactors=FALSE)
于 2014-08-20T21:51:24.350 回答
20

您的一列是列表类型,因此 data.frame 不再是二维的,并且不能导出到二维 csv 文件。

如果您仍想将列表存储在结果输出中,您可以先将其转换为 JSON。所以它变成了一列“字符”类型的列,可以很容易地作为一列导出到 csv。

于 2013-06-25T07:21:13.687 回答
3

我只是遇到了同样的问题,我没有使用 as.character() 或 as.numeric(),而是使用了 as.matrix(),它保留了我的字符变量字符和我的数字变量数字,并输出 .csv 文件像做梦一样。

于 2016-07-15T20:47:19.647 回答