for
ループをapply
のループを既存のRスクリプトに置き換えようとしました。それにもかかわらず、私の古い関数は、return(list(df1,df2))
のような複数のdataFramesリストを返します。いくつかの詳細については、例を以下に示す:Rリターンリストでループを適用
旧スクリプト:
MyFunction = function(input){
df1=array(NA,c(0,1))
df2=array(NA,c(0,1))
for(i in 1:n){
...
df1 = rbind(df1,action1(input))
df2 = rbind(df2,action2(input))
}
return(list(df1,df2))
新しいスクリプト:
Object = do.call(rbind, lapply(1:n,function(i){
df1 = action1(input)
df2 = action2(input)
return(list(df1,df2))
}))
私が取得:
[,1] [,2] [,3] [,4] [,5]
[1,] List,2 List,2 List,2 List,2 List,2
[2,] List,2 List,2 List,2 List,2 List,2
[3,] …
私は解決する見当がつかない私の問題。どんな助けでも感謝します。進歩で
おかげで、
B.Gees
* action1()*と* action2()*は何ですか?そしてそれらは、最初の機能ではなく配列である2つの全く異なるデータ構造のデータフレームです。 – Parfait
申し訳ありませんが、私の例は表現力がありません。私は変換されたdataFrame上で2つの異なる計算のために入力データフレームと 'action1'と' action2'とで異なるアクションに '... 'を使いました。私は 'array'とdataFrameの違いについてあなたに同意しますが、私にとっては、最初の結果dataFrameを単純に連結して、dataFrameを初期化し、良い列ヘッダーを取得する単純なソリューションです。 –