我正在尝试在一个函数上使用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
列。谁能指出我搞砸了循环的哪一部分?
答案 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)
}