循环write.csv数据帧

时间:2015-04-13 17:00:09

标签: r loops csv

R newbie here:我看过很多关于循环写csv的帖子,但是没有输入数据帧(不是数据帧列表)和循环来编写csv。我想遍历所有数据帧,并为每个数据帧创建一个与数据帧名称匹配的csv。

df1 <- data.frame(
  var1 = sample(1:10, 6, replace = TRUE)
  , var2 = sample(LETTERS[1:2], 6, replace = TRUE)
  , theday = c(1,1,2,2,3,3)
)

df2 <- data.frame(
  var1 = sample(1:10, 6, replace = TRUE)
  , var2 = sample(LETTERS[1:2], 6, replace = TRUE)
  , theday = c(1,1,2,2,3,3)
)

我有一个包含数据帧名称的字符列表,但数据本身存在于数据框中。

temp <- list("df1", "df2")

输出应该具有标记为“df1.csv”和df2.csv的csv中的数据 我认为会是这样的:

for (i in 1:length(temp)) write.csv(temp[i])

但这反而写入控制台并执行write csv。想法?!

1 个答案:

答案 0 :(得分:1)

作为@Roland评论,您应该循环显示列表(例如lapply)并使用getwrite.csv

lapply(temp, function(u) write.csv(get(u), file=u))

要将data.frame存储在列表中,您可以执行以下操作:

Filter(function(u) class(get(u))=='data.frame', ls())