lapply

2016-07-26 3 views
0

私は私がした場合、Tlapply

t1 <- c("a","b","c") 
t2 <- c("d","e","f") 
t <- list(t1, t2) 

のリストをMyFTableのリストを適用しようとした「MyFTable」と呼ばれるReporteRsパッケージで作成名とテーブルのリストのリスト、Iを持っています別にして、それは動作しますが、私はループに入れて、それは動作しません。

xはFlexTableあなたのアドバイスのための

おかげでなければなりません:私はエラーを得た

for(i in 1: length(MyFTable)){ 
    lapply(MyFTable[[i]],function(x) addHeaderRow(x, value=c("",t[[i]]))) 
} 

for(i in 1: length(MyFTable)){ 
    lapply(MyFTable[[i]],function(x) addHeaderRow(x[[i]], value=c("",t[[i]]))) 
} 

addHeaderRow(MyFTable[[1]], value=c("", t1)) 
    addHeaderRow(MyFTable[[2]], value=c("", t2)) 

は、これが私の試みです。

+0

なぜあなたは 'for-loop 'の' lapply'ingですか?どちらか一方を使用し、 'for'ループを使用する場合は、事前に割り当てます。 – alistaire

+0

dfの最初のリストを最初の名前リスト – BIN

答えて

1

理由がないため、lapplyを追加しています。これは通常のループで行うことができます。

out <- vector("list", length(MyFTable)) # always pre-allocate 

for(i in 1:length(MyFTable)){ 
    out[[i]] <- addHeaderRow(MyFTable[[i]], value=c("",t[[i]]))) 
} 

また、(この場合mfttt内)のすべての提供のオブジェクトからの対応する要素に取り組んでいますmapplyを使用することができます。

myFun <- function(mft, tt) addHeaderRow(mft, tt) 
mapply(FUN = myFun, mft = MyFTable, tt = t) 

あなたはlapplyに地獄曲がっている場合は、「ループを隠す」ことができます。

lapply(1:length(MyFTable), FUN = function(i, mft, tt) { 
    addHeaderRow(mft[[i]], value = c("", tt[[i]])) 
}, mft = MyFTable, tt = t) 

このコードの最後の作品は、それがデバッグ機能の中でいくつかの点でbrowser()を設定することによりRにどのように動作するかを示すために簡単ですので、実行はその時点で停止し、あなたが要素または事前に検査するか興味深いですnまたはcと入力してください。最初のコマンドは1行先に移動し(browser()コールから)、cは現在の "ループ"を実行し、次のループのbrowser()行で待機します(完了していない場合は存在します)。

は、それを試してみてください

lapply(1:length(MyFTable), FUN = function(i, mft, tt) { 
    browser() 
    addHeaderRow(mft[[i]], value = c("", tt[[i]])) 
}, mft = MyFTable, tt = t) 

を実行し、あなたのプロンプトはビットを変更する必要があります。要素i,mftttを調べて、MyFTable[[1]]t[[1]]要素と一致するかどうかを確認します。終了するには、Qと入力します。

+0

で適用しようとしました。もしMyFTable [1,1:10、newpar = TRUE、to = "header"] < - c( ""、あなたの関数を適用するためにはどのように働くのですか? – BIN

+0

私は(1:length(MyFTable)){MyFTable [[i]] [1,1:10、newpar = TRUE、to = "header "] < - c(" "、second [[i]])}それは動作します – BIN

+0

この時点で@Stat新しい質問をして、再現可能な例を提供するように依頼します。 [これはいくつかのヒントです](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)そのやり方については、こちらをご覧ください。 –

関連する問題