web-dev-qa-db-ja.com

lapplyを使用してデータフレームのリストに関数を適用し、異なる名前のファイルに出力を保存する

データフレームのリストがあり、リストの各要素(各データフレームなど)に名前を付けました:

例えば.

_df1 <- data.frame(x = c(1:5), y = c(11:15))  
df2 <- data.frame(x = c(1:5), y = c(11:15))  
mylist <- list(A = df1, B = df2)  
_

各データフレームに適用する関数があります。この関数では、結果をファイルに書き込むための行を追加します(最終的には、各データフレームの2つの変数間の相関関係のプロットを保存するなど、より複雑なことをしたいのですが、簡単に始めたいと思いました)

例えば.

_NewVar <- function(mydata, whichVar, i) {  
mydata$newVar <- mydata[, whichVar] + 1  
write.csv(mydata, file = i)  
}
_

lapply()を使用して、リスト内の各データフレームにこの関数を適用したい

何かのようなもの:

_hh<-lapply(mylist, NewVar, whichVar = "y")
_

Lapplyのコンテキスト内で「i」を割り当てて、iがデータフレームのリスト内の名前を反復処理し、複数のファイルを異なる名前(この場合は2つのファイル)で保存する方法がわかりません変更されたデータフレームに対応するAおよびB)という名前です。

25
user2414840

次のlapply呼び出しで動作します:

lapply(names(mylist), function(x) NewVar(mylist[[x]], "y", x))
9
Sven Hohenstein

多くのオプションがあります。例えば:

  lapply(names(mylist),
         function(x)write.csv(mylist[x],
                              file =paste0(x,'.csv')))

またはインデックスを使用して:

 lapply(seq_along(mylist),
     function(i)write.csv(mylist[i],
                          file =paste0(names(mylist)[i],'.csv')))
12
agstudy