2017-05-26 14 views
0

私の質問は簡単で、私が探していない何かを与えるlapplyでたくさんの "答え"があります。リストを取得してからデータフレームを取得するために別のループを実行しなければならないため、これらのメソッドは役に立ちません。同じ問題が発生します。シリアル化された名前で複数のデータフレームを一度に作成します。だから私は新しい質問をしています。R importはリストからループを使っていくつかのデータフレームを作成します

私は1つには5つの異なるシートを使用していますが、5つの異なるデータフレームを作成したいと思います。

mo_1<-data.frame(ln[[2]]) 

、それは私の右のシートファイルを与えるように見えます:

library(openxlsx) 

ln=list() 
for (i in 2:6) 
    { 
ln[[i]]<-read.xlsx("File.xlsx", sheet=i-1, startRow=3) 

} 

はその後、私は私が行うことができます知っています。 しかし、私はすべてのシートのためにこれを行う必要があります。私の試みは次のとおりです:

for (i in 2:6){ 
    mo_[i]<-data.frame(ln[[i]]) 
} 

これは以前と同じ問題になります。 P

私はmo2、...、mo6の5つのファイルが必要です。それらをDATAFRAMES(リストではない)にします。

ありがとうございます。

他の解決策が機能しない理由: - フレームを作成していないように見えますが、リストを作成し続けるように見えます。手動で変換する必要があるようです。

この質問を表現する別の方法は、ループを使用してリストからデータフレームを作成する方法です。

+0

を彼らは助けていない理由を説明することなく、そこに既存の答えをそこにいることに言及し、有用ではありません。 –

+0

うまくいかない解決策が含まれているかどうかを説明しないと、あなたが言及していることを言い表すのは難しいですが、まだ難しいです。 –

+0

あなたの変数 'ln'はデータフレームのリストなので、' ln [[]] '表記で各データフレームにアクセスするのが最も簡単です。本当に新しい変数名のシーケンスを使用する場合は、 'assign'関数を使用してください。関連記事:https://stackoverflow.com/questions/24699989/r-dynamically-create-a-variable-nameを参照してください。私は信じています: 'assign(paste0(" mo "、i)、ln [[i]])はあなたが探しているものです。 – Dave2e

答えて

0

list2envを使用して、データフレームの名前付きリストの要素を別々のオブジェクトに出力できるので、lapplyソリューションを再考してください。ただ、setNames前で要素に名前を付けるようにしてください:あなたはまだあなたが50があることができ、コメント、特にとして、DF操作のためにリストを使用できるよう言ったでは

library(openxlsx) 

ln <- lapply(2:6, function(i) read.xlsx("File.xlsx", sheet=i-1, startRow=3))  
ln <- setNames(ln, paste0("mou_", 1:5)) 

list2env(ln, envir=.GlobalEnv) 

、別のオブジェクトを操作するための本当の理由はありません同様の構造を維持しているように聞こえるデータフレーム。ただ、多くのではなく、オブジェクトを管理:

merge(ln$mou_1, ln$mou_2, by="id") 

aggregate(.~group1 + group2, ln$mou_3, FUN=sum) 

rbind(ln$mou_4, ln$mou_5) 
+0

ありがとう、あなたの答えはありますが、これは質問に対処していません。 – Allan

+0

これはなぜ問題に対処していないのですか?コードを実行しましたか?図示のように、 'lapply'はExcelシートをデータフレームのリストにインポートし、' list2env'はリスト要素をデータフレームオブジェクトを分離するために出力します。これは、ループを使ってリストからデータフレームを作成する方法です。*ところで、 'lapply'はループです! – Parfait

関連する問題