2016-05-11 11 views
1

私はユニークなモデルに基づいて予測の3つのセットを含むリスト、predsを持っているといいます。R - リストの要素から新しいリストを作成するには?

set.seed(206) 
preds <- list(rnorm(1:100), rnorm(1:100), rnorm(1:100)) 

リストを繰り返して新しいリストを作成しています。私は他のベクトルの対応するインデックスで構成されている新しいベクトルのリストが必要です。したがって、たとえば、私はこのようなsapply()を使用して、リストの各ベクトルの最初の要素を取得することができます

sapply(preds, "[[", 1) 

うまく動作しますが、私は新しいを構築するために、各ベクトルの各要素を反復処理する方法を見つけ出すことはできませんリスト。私はこの(動作しない)のようなものとします

sapply(preds, "[[", 1:100) 

上記シードとpredsリストを使用して、私の所望の出力は次のようなものになるだろう:

first_element <- sapply(preds, "[[", 1) 
second_element <- sapply(preds, "[[", 2) 
third_element <- sapply(preds, "[[", 3) 
desired_result <- rbind(first_element, second_element, third_element) 

しかし、リスト内のすべての要素について、この例では100です。

これが明確でない場合は、私に教えてください。何か助けてください!私たちは、[

res <- sapply(preds, `[`, 1:3) 
all.equal(res, desired_result, check.attributes=FALSE) 
#[1] TRUE 

答えて

4

はここで別のアプローチです:

nth_element <- function(dat, n){ 

    res <- sapply(dat, "[[", n) 

    res 

} 

res2 <- do.call(rbind, lapply(c(1:3), function(x) nth_element(dat = preds, n = x))) 

借入akrunのチェックコード:

all.equal(res2, desired_result, check.attributes=FALSE) 
1

を使用する必要が

+0

非常に素晴らしい、私の心はもともと行っていたところ、これがありますしかし、私はそこにはあまり行きませんでした。私は基本的に同じコードを持っていましたが、カスタム関数を作成する代わりにfor()ループを試していました。私は追加のソリューションを感謝します。 –

関連する問題