2016-03-29 15 views
0

Tümü aynı sütunlara sahip olan 40 veri kümesinin bir listesi var. Her veri kümesinin 7. sütununu bağlamak istiyorum. Bunu cbind kullanarak bir matris ile yapmayı düşündüm. (Q [i], 1: 766, x [9]) olarak değiştirin: sayıBir matris ile cbind kullanırken hatalar

uyarı mesajları: 1 I bu uyarıları almak

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) 

: Bu benim kodudur Değiştirilecek nesnelerin numarası, değiştirmenin boyutunun katı değildir!

+2

kullanabilir? senin örneğin yeniden üretilebilir değil. Bir tane verebilir misin? Ve uyarı alıyorsunuz çünkü 'q [, i]' i, cbind (q [, i], x [, 9]) 'ile değiştirmeyi deneyin. Yapmak istediğiniz şey 7. veya 9. sütunları bağlamak mı? (Sorunuzdaki aynı bilgi değil) – cderv

+0

ve 'q' işlevinizin içinde tanımlanmıştır. Tartışmayı düşünmek istiyorsan onu çıkarmalısın. – cderv

cevap

1

en küçük bir örneği ele alalım: Bu 3 matrisleri

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

her birinin cbind 5 sütunlar Önce,

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

Sonra kullanabilirsiniz liste halinde 3 matrisler koymak sorunuzda olduğu gibi, bir for döngü

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

Ya biz bir biraz daha karanlık komuta sonucu almak için bazı sihirli R fonksiyonları `ListeActions` nedir

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