R用于循环写入包含数据帧和路径名列表的CSV

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

出于某种原因,我试图在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)
  }
}
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]。