【问题标题】:Use write.csv to export data with unequal rows使用 write.csv 导出不等行的数据
【发布时间】:2013-11-20 16:57:21
【问题描述】:

我正在尝试创建一系列 data.frames 并将它们导出到 csv 文件以在另一个程序中使用。文件的格式需要是几列等长,然后是最后一列,其中没有数据。我认为list 是执行此操作的合适方法,但我无法使导出的 csv 文件如下所示。

alist <- list(c(100,1,2,3,4,5), list(c(200,1,2,3,4,5)), list(c(300)))

我的最终 csv 文件应如下所示:

100 200 300
1   1 
2   2 
3   3 
4   4 
5   5 

有什么建议吗?感谢任何帮助。

【问题讨论】:

  • 欢迎来到 SO。请分享您迄今为止尝试过的代码以及它不符合您期望的原因。另外,包括一个样本数据集供我们使用。
  • 我熟悉将 write.csv 用于数据帧,但我认为在不引入 NA 的情况下无法创建非矩形数据帧,这不适合我的使用。我想如果我可以创建一个列表,并将每个元素导出为 csv 文件中的一列,这将解决我的问题。我一直无法做到这一点,并且已经进行了大量搜索。我已经添加了一个示例列表以及它在 csv 文件中的外观,但不幸的是,除此之外,我没有值得发布的代码。
  • 任何代码都是好的。我会使用这里的解决方案:stackoverflow.com/questions/7196450/… 创建一个数据框,然后 alist[is.na(alist)]
  • 我试过了,我不相信你可以有一个没有任何内容的数据框。不能用“”替换 NA。 @JLLagrange

标签: r list csv export-to-csv


【解决方案1】:

希望我能正确理解这个问题(如果黑暗回归......)。

NA 中的值在写入 CSV 文件时不会造成任何问题,因为在write.table 中有一个参数,“na”,描述为 用于在 因此,当您将data.frame 写入文件时,您的NA 值可以被任何内容替换。

这是一个小例子:

创建一个不平衡的data.frame

请注意空的“300”列和不完整的“400”列。在 R 中,这些填充有 NA 值。

df <- data.frame(`100` = c(1,2,3,4,5), `200` = c(1,2,3,4,5), 
                 `300` = NA, `400` = c(letters[1:3], NA, NA), 
                 check.names=FALSE)
df
#   100 200 300  400
# 1   1   1  NA    a
# 2   2   2  NA    b
# 3   3   3  NA    c
# 4   4   4  NA <NA>
# 5   5   5  NA <NA>

将数据写入 CSV 文件

在这里,为了方便和演示,我正在写入 R 工作区中的临时文件并使用 cat(readLines(...)) 查看它。实际上,您可能会将其写入工作目录中的 CSV 文件,然后用另一个程序打开它。请注意根据输入正确形成的 CSV 文件,但在原始数据中没有 NA 的位置。

x <- tempfile()
write.csv(df, file = x, na = "", row.names = FALSE)
cat(readLines(x), sep="\n")
# "100","200","300","400"
# 1,1,,"a"
# 2,2,,"b"
# 3,3,,"c"
# 4,4,,
# 5,5,,

【讨论】:

    猜你喜欢
    • 2022-11-18
    • 2021-08-09
    • 2013-07-20
    • 2023-04-05
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    相关资源
    最近更新 更多