将R中的数据帧输出到.csv

时间:2013-06-25 07:13:32

标签: r csv dataframe output

所以我试图根据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")

任何解决方案?

3 个答案:

答案 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文件就像一场梦。