R将csv文件保存为for循环中的功能

时间:2019-05-07 23:33:56

标签: r for-loop

我正在尝试在一个函数上使用for循环,该循环将读取由循环读取的数据文件,对其进行修改并将结果保存为csv文件,并且无法弄清楚如何应用该循环以便将每个结果保存为单独的csv文件。

下面是我的数据框示例:

df1 <- data.frame("age" = c(1.5, 5.5, 10), "group" = rep("A", 3))
df2 <- data.frame("age" = c(1, 5.5, 9, 15), "group" = rep("B", 4))
dffiles <- list(df1, df2)

现在我的代码如下:

addone <- function(id,df){
new <- df[,1]+1
df$index <- id
name <- paste0("df",i)
assign(name, df)
write.csv(new, paste0("added", id, ".csv"))
}

for (i in 1:2){
  dffile <- dffiles[[i]]
  addone(i, dffile)
}

因此for循环正在读取每个原始文件,理想情况下,每个原始文件都将获得一个新的index列并保存为csv文件。我的循环似乎有问题,因为当我在函数中运行单独的行时会得到正确的文件,但是循环中的输出不包含index列。谁能指出我搞砸了循环的哪一部分?

1 个答案:

答案 0 :(得分:0)

您需要创建一个新的文件名,然后在write.csv函数中使用新创建的名称。

类似的事情应该起作用:

#function takes an ID and creates the file name
func <- function(id, df) {
  new <- df[,1]+1
  write.csv(new, paste0("new", id, ".csv"))
} 


#the call to the function passes the identifier.
dffiles <- list(df1, df2)
for (i in 1:2){
  dffile <- dffiles[[i]]
  func(i, dffile)
}