2016-04-03 4 views
2

coloumnで行列を記入する必要があります。リストから記入マトリクス

私はこのリストを持っている:

> 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 

私はそのようなマトリックスを作成します:

N perS perM 
10 12  0  
10 11  0 

これは私がやったことです:

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

と結果は:

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

どうすれば解決できますか? ありがとう

答えて

2

ちょうどunlist()です。 dimnamesと同時に名前を設定することもできます。

## 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 

またsapply()でそれを行うことができますが、上記の方法は、より高速になります。

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

を使用することができます。 :)しかし、次元を指定する必要があります。 – Gopala

+0

@ HaddE.Nuffありがとう、それは完璧に動作します:-) – marielle

0

は、私たちは、これは私がのために行っていたソリューションであり、約投稿するラッパー関数simplify2array

`colnames<-`(simplify2array(x), c("N", "perS", "perM")) 
#  N perS perM 
#[1,] 10 12 0 
#[2,] 10 11 0 
関連する問題