如何将列表转换为矩阵?

问题描述:

在R I具有类型“列表”的对象k:如何将列表转换为矩阵?

> k 
    [,1] [,2] [,3] [,4] 
[1,] "aa" "cg" "cg" "tt" 
[2,] "ag" "gg" "gt" "tt" 
> dim(k) 
[1] 2 4 
> typeof(k) 
[1] "list" 

我想变换像例如字符的矩阵P

> p 
    [,1] [,2] [,3] [,4] 
[1,] "aa" "cg" "gc" "tt" 
[2,] "ag" "gg" "gt" "tt" 
> dim(p) 
[1] 2 4 
> typeof(p) 
[1] "character" 

matrix()和as.matrix()似乎没有做这项工作。实际上,k是一个矩阵()调用应用到vapply()调用结果的结果。

+3

你能使用'dput'并粘贴输出即。 'dput(head(k))' – akrun 2014-09-22 10:56:46

+0

@akrun:所需的输出是'structure(c(“aa”,“ag”,“cg”,“gg”,“cg”,“gt”,“tt”, “tt”),.Dim = c(2L, 4L))' – user1479670 2014-09-22 13:42:52

+0

谢谢,你从David Arenburg,agstudy得到了一些很好的答案。 – akrun 2014-09-22 16:47:27

或者

p <- as.character(k) 
dim(p) <- dim(k) 
typeof(p) 
## [1] "character" 
dim(p) 
## [1] 2 4 

假设这是k

k <- structure(list("aa", "cg", "cg", "tt", "ag", "gg", "gt", "tt"), 
       .Dim = c(2L, 4L)) 
+0

谢谢David。这个工作,当我做手工,但是当我把这些行放入函数 – user1479670 2014-09-22 13:35:59

+0

@ user1479670,不知道你的意思。什么时候不工作? – 2014-09-22 13:45:21

+0

在创建k之后,当我在函数结尾处放置行'p user1479670 2014-09-22 13:51:39

你可以使用存储模式storage.mode<-

使用大卫的数据,k

k <- structure(list("aa", "cg", "cg", "tt", "ag", "gg", "gt", "tt"), 
       .Dim = c(2L, 4L)) 
typeof(k) 
# [1] "list" 
storage.mode(k) <- "character" 
typeof(k) 
# [1] "character" 
dim(k) 
# [1] 2 4 
is.matrix(k) 
# [1] TRUE 
dput(k) 
# structure(c("aa", "cg", "cg", "tt", "ag", "gg", "gt", "tt"), .Dim = c(2L, 
# 4L))