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)

})

現在、out110個のファイルのリストです。これらの出力ファイルは長さが異なるため、使用できませんas.data.frame(do.call(rbind, out))。各ファイルをループのような方法で個別のファイルとして保存する方法はありますか、それとも手動で行う必要がありますか (たとえばout[1]out[2]など...)。

4

1 に答える 1

2

によって何を達成しようとしていdo.call(rbind...ますか? これは、リスト内のデータを結合するためのものです。そこに「」を入れる理由がわかりませんas.data.frame。同じ列の of があり、行数が異なり、基本的にそれらの を互いに「積み重ね」たいlist場合は、次のようにして大きなものを取得して保存することができます。単一のオブジェクト:data.framedata.framedata.frame

do.call(rbind, out)

data.frame「out」という名前のリストに異なる がありdata.frame、作業ディレクトリに を個別のファイルとして保存しようとしているようです。その場合は、次のようにしてみてください。

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

リスト内の の名前がdata.frame一意でない場合は、別のアプローチが必要になることがあります。

以前の関連する質問にリンクしている場合は、誰がコードを共有したかを単に言及するよりも良いかもしれません.

于 2013-01-05T17:16:01.657 に答える