【发布时间】:2016-09-30 02:02:26
【问题描述】:
我想在 for 循环中编写 csv 文件。假设我有一个包含 3 行的数据框 data,为简单起见,变量 x。最后,我希望我的输出是 200 个 .csv 文件,每个文件都包含一行数据。数据的第一列是我的变量的标识(“ID”)。
另外,我的数据描述如下:
data:
ID x
[1] a 1
[2] b 2
[3] c 3
for (i in nrow(data)){
write.csv(data[i,2], file = paste0("Directory/", "data[i,1], ".csv"))
}
我运行此代码并创建了一个 csv 文件。但是,只创建了最后一行,这意味着我只找到一个文件c.csv。
你知道我做错了什么吗?我认为它会自动创建所有档案。我应该先将结果保存在列表中,然后再导出吗?
【问题讨论】:
-
也许我数错了,但你的引号似乎有些不对劲。您是否按 1:1 复制并粘贴了代码?
-
nrow(data)是一个数字,而不是一堆要迭代的数字。您需要1:nrow(data)或seq(nrow(data))。或者只使用lapply。另外,您在"data[i,1]上有一个额外的报价。 -
@Rafael 的回答太棒了。但我怀疑它可能过于复杂,无法说明您的代码为什么不起作用。查看下面的代码并将其与您自己的代码进行比较。注意我在哪里使用撇号。
for (i in 1:nrow(data)) { write.csv(data[i,2], file = paste0("Directory/", data[i,1], ".csv")) }另外,R 中的一般提示。永远不要将您的数据称为“数据”。如果需要,可以将其称为“dat”或“data1”。
标签: r csv for-loop export-to-csv