2016-04-03 25 views
2

Matrisi sütunlara göre doldurmam gerekiyor.Matrisi matris listesinden doldurun

> print(list_all) 
[[1]] 
[[1]][[1]] 
[1] 10 

[[1]][[2]] 
[1] 10 


[[2]] 
[[2]][[1]] 
[1] 12 

[[2]][[2]] 
[1] 11 


[[3]] 
[[3]][[1]] 
[1] 0 

[[3]][[2]] 
[1] 0 

böyle bir matris oluşturmak istiyorum:

Bu liste var

mat <- matrix(list_all[], 
       byrow = FALSE,       
       ncol = 3,  
       nrow = permutations*length(listN)) 
colnames(mat) <- list ("N", "perS", "perM") 
print(mat) 

ve sonucudur:

N perS perM 
10 12  0  
10 11  0 

Bu benim yaptığım budur :

 N  perS   perM 
[1,] List,4 List,4  List,4  
[2,] List,4 List,4  List,4  

Nasıl çözebilirim? Teşekkürler

cevap

2

Sadece unlist() önce. Ayrıca isimleri dimnames ile de ayarlayabilirsiniz.

## example list 
x <- list(list(10, 10), list(12, 11), list(0, 0)) 

matrix(
    unlist(x), 
    unique(lengths(x)), 
    dimnames = list(NULL, c("N", "perS", "perM")) 
) 
#  N perS perM 
# [1,] 10 12 0 
# [2,] 10 11 0 

Ayrıca sapply() ile yapabilirdi, ama yukarıdaki yöntemi daha hızlı olacaktır.

`colnames<-`(sapply(x, unlist), c("N", "perS", "perM")) 
#  N perS perM 
# [1,] 10 12 0 
# [2,] 10 11 0 
+0

kullanabilirsiniz. :) Ancak, boyutları belirtmeniz gerekiyor. – Gopala

+0

@ HaddE.Nuff Teşekkürler, mükemmel çalışır :-) – marielle

0

Biz Ben bunun için gidiyordu çözümdür ve daha duyurmayı bir sarıcı işlevi simplify2array

`colnames<-`(simplify2array(x), c("N", "perS", "perM")) 
#  N perS perM 
#[1,] 10 12 0 
#[2,] 10 11 0