R用于循环写入包含数据帧和路径名列表的CSV
出于某种原因,我试图在R中编写一个for循环,其中包含数据帧和路径名的列表,第二个数据帧是唯一导出的数据帧。任何帮助都将不胜感激R用于循环写入包含数据帧和路径名列表的CSV,r,for-loop,export-to-csv,R,For Loop,Export To Csv,出于某种原因,我试图在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 = sa
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)
}
}
df1这应该可以:
for (i in 1:length(list_dfs)) {
write.csv(list_dfs[i], file = paths[i], row.names = FALSE)
}
}
您提供的代码正在将list\u dfs[1]
写入path[1]
,然后写入path[2]
。然后是list\u dfs[2]
到path[1]
,然后是path[2]
,导致list\u dfs[2]
被写入path[1]
和path[2]
如果要包括检查列表_dfs
和路径的长度是否相同,可以执行以下操作:
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()
循环
我希望这有帮助 在我看来,在第一个外循环中正确导出df1
,然后在第二个外循环中覆盖相同的文件。您需要区分文件名。你的具体意图是什么?您的代码似乎希望将每个数据帧导出两次。如果只想执行一次,可以删除内部循环并编写路径[i]
而不是路径[f]
。我建议:删除内部循环并将文件=路径[f]
替换为文件=路径[i]
。用list\u dfs[[i]]
替换list\u dfs[[i]]
。这正是我所需要的,谢谢你们!拆下内环。将list_dfs[i]替换为list_dfs[[i]],将file=path[f]替换为file=path[i]。