有谁可以帮我解决这个问题。我在@Arun提供的以下代码中使用lapply
:
out <- lapply(1:length(f1), function(f.idx) {
df1 <- read.delim(f1[f.idx], header = T)
df2 <- read.delim(f2[f.idx], header = T)
df3 <- read.delim(f3[f.idx], header = T)
idx.v <- get_idx(df1)
result <- get_result(idx.v, df2, df3)
})
现在,out
是110个文件的列表。这些输出文件的长度不同,因此我无法使用as.data.frame(do.call(rbind, out))
。
有没有办法以循环方式将每个文件保存为单独的文件,或者我是否必须手动执行(例如out[1]
,out[2]
等等。)
答案 0 :(得分:2)
你想通过do.call(rbind...
实现什么目标?这是为了组合列表中的数据。我不确定你为什么会在那里贴上“as.data.frame
”。如果list
的{{1}}具有相同的列,但行数不同,并且您基本上希望将这些data.frame
“堆叠”在一起,那么您应该能够使用以下内容获得一个大的data.frame
,然后保存该单个对象:
data.frame
听起来您在名为“out”的列表中有不同的do.call(rbind, out)
s,并且正在尝试将data.frame
保存为工作目录中的单个文件。如果是这种情况,请尝试以下方法:
data.frame
如果列表中lapply(names(out),
function(x) write.csv(out[[x]],
file = paste(x, ".csv", sep = "")))
的名称不唯一,则可能需要采用不同的方法。
如果您链接到之前的相关问题,那可能比简单地提及与您共享代码的人更好。