0

谁能帮我解决这个问题。我lapply在@Arun提供的以下代码中使用:

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]等等......)。

4

1 回答 1

2

你想通过什么来实现do.call(rbind...?那是为了组合列表中的数据。我不知道你为什么要as.data.frame在里面贴一个“”。如果您有一个listofdata.frame具有相同列的 s,但行数不同,并且您基本上希望将这些data.frames 彼此“堆叠”,那么您应该能够使用以下内容获得一个大data.frame然后保存单个对象:

do.call(rbind, out)

听起来您data.frame在名为“out”的列表中有不同的 s,并试图将您data.frame的 s 保存为工作目录中的单个文件。如果是这种情况,请尝试以下操作:

lapply(names(out), 
       function(x) write.csv(out[[x]], 
                             file = paste(x, ".csv", sep = ""))) 

如果data.frame列表中 s 的名称不是唯一的,您可能需要采用不同的方法。

如果您链接到您之前的相关问题,这可能比简单地提及谁与您共享代码更好。

于 2013-01-05T17:16:01.657 回答