我正在尝试在 R 中使用数据帧和路径名列表编写一个 for 循环。出于某种原因,第二个数据帧是唯一导出的数据帧。任何帮助将不胜感激。
df1 <- data.frame(num = sample(1:10, 6, replace = TRUE), letter = sample(LETTERS[1:2], 6, replace =
TRUE))
df2 <- data.frame(num = sample(150:160, 6, replace = TRUE), letter = sample(LETTERS[1:2], 6, replace
= TRUE))
list_dfs <- list(df1,df2)
paths <- c("C:\\Export\\file1.csv","C:\\Export\\file2.csv")
for (i in 1:length(list_dfs)) {
for (f in 1:length(paths)) {
write.csv(list_dfs[i], file = paths[f], row.names = FALSE)
}
}
最佳答案
这应该有效:
for (i in 1:length(list_dfs)) {
write.csv(list_dfs[i], file = paths[i], row.names = FALSE)
}
}
您提供的代码是将 list_dfs[1]
写入 path[1]
,然后写入 path[2]
。接下来是 list_dfs[2]
到 path[1]
,然后是 path[2]
,结果是 list_dfs[2]
被写入 path[1]
和 path[2]
。
如果您想检查 list_dfs
和 path
的长度是否相同,您可以这样做:
for (i in 1:length(list_dfs)) {
if(length(list_dfs) != length(path)){stop("mismatch in number of data frames and paths")}
write.csv(list_dfs[i], file = paths[i], row.names = FALSE)
}
}
最终,如果您想导出每个数据帧一次,则只需要一个 for()
循环。
希望这会有所帮助!
关于R For 循环写入包含数据帧和路径名称列表的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62270061/