【问题标题】:Outputting a Dataframe in R to a .csv将 R 中的数据框输出到 .csv
【发布时间】:2013-06-21 21:25:51
【问题描述】:

所以我正在尝试基于 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")

有什么办法吗?

【问题讨论】:

  • 检查你的df实际上是一个数据框,而不是F密度函数(?df)。

标签: r csv dataframe output


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您也可以直接在 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)
    

    【讨论】:

    • 谢谢!这正是我想要的。
    • @SummerEla,如果列表长度不同怎么办:它给了我arguments imply differing number of rows: 2, 3 错误
    • @academic.user 对于数据框,R 通常在假设您放入数据框中的所有列都将具有相同长度的情况下工作。如需帮助整理您的数据,请尝试以下操作:stackoverflow.com/questions/15753091/…
    • 这对我也有用,但需要注意的是 as.character 将所有内容更改为字符列,从而弄乱了我的小数位数。如果您使用的是数字 data.frame,请尝试 my.df &lt;- data.frame(lapply(old.df, as.numeric), stringsAsFactors=FALSE)
    • 谢谢,@slammaster;我更新了我的答案以纳入您的观点。
    【解决方案3】:

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

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

    【讨论】:

    • 谢谢,解决了。在 R 中处理日期有点不稳定
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    相关资源
    最近更新 更多