我正在尝试创建一系列data.frame
并将它们导出到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
有什么建议吗?感谢任何帮助。
希望我能正确理解这个问题(如果黑暗回来了......
R中的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,,