2016-03-29 7 views
0

すべてが同じ列を持つ40個のデータセットのリストがあります。各データセットの7番目の列をバインドします。私はcbindを使って行列を使ってこれを行うことを考えました。 (Q [、i]は、1:766、X [9]):では、置き換える:番号を行列でcbindを使用しているときのエラー

警告メッセージ:1、私はこれらの警告を取得し

RetRates <- function(q) { 
    q <- matrix(nrow = 766, ncol = length(ListeActions), 
       data = rep(0, 766), byrow = TRUE) 
    s <- 0 
    for (i in 1:length(ListeActions)) { 
     x <- ListeActions[[i]] 
     q[,i] <- cbind(q[,i], x[,9]) ## I need the 9th column 
    } 
    return(q) 
} 

Hedi <- matrix(nrow = 766, ncol = length(ListeActions), 
       data = rep(0, 766), byrow = TRUE) 
Hedi <- RetRates(Hedi) 

:これは私のコードです置き換えられるオブジェクトの は、置き換えられる のサイズの倍数ではありません!

+2

をいくつかの魔法のRの機能を使用することができます 'ListeActions'は何ですか?あなたの例は再生できません。あなたはそれを提供できますか? 'q [、i]'を2つの要素である 'cbind(q [、i]、x [、9])'に置き換えようとしたので警告が表示されます。 7番目または9番目の列をバインドしますか? (あなたの質問に同じ情報ではありません) – cderv

+0

と 'q'はあなたの関数内で定義されています。それを議論とみなしたいのであれば、それを理解しておくべきです。 – cderv

答えて

1

のは、小さな例を見てみましょう:これらの3つの行列

d1 <- matrix(runif(30), 5, 6) 
d2 <- matrix(rnorm(30), 5, 6) 
d3 <- matrix(rnorm(30), 5, 6) 

のそれぞれのcbind第五列は、まず私たちは、

M <- list(d1=d1, d2=d2, d3=d3) 

はその後、我々が使用することができ、リスト3つの行列を置きますあなたの質問と同様に、forループ

res1 <- matrix(NA, nrow=5, ncol=length(M)) 
for (i in 1:length(M)) { 
    res1[, i] <- M[[i]][,5] 
} 

それとも我々は1つのもう少しあいまいなコマンドで結果を得るために

res2 <- do.call(cbind, lapply(M, "[",,5))