基数 R 中的未嵌套矩阵

Unnest matrix in base R

考虑这种形式的嵌套矩阵,其中每个元素都是向量、列表或数据框:

m <- matrix(replicate(3, list(1:3)))
m
#     [,1]     
#[1,] integer,3
#[2,] integer,3
#[3,] integer,3

如何“取消嵌套”这个矩阵?即得到这个输出:

unnestFunction(m)
#[[1]]
#[1] 1 2 3
#
#[[2]]
#[1] 1 2 3
#
#[[3]]
#[1] 1 2 3

使用c:

c(m)
#[[1]]
#[1] 1 2 3
#
#[[2]]
#[1] 1 2 3
#
#[[3]]
#[1] 1 2 3

“只需使用 c()”是一种方法。您还可以删除维度属性:

dim(m) <- NULL

str(m)
#------------
List of 3
 $ : int [1:3] 1 2 3
 $ : int [1:3] 1 2 3
 $ : int [1:3] 1 2 3

可能的解决方案:

m[T]

#> [[1]]
#> [1] 1 2 3
#> 
#> [[2]]
#> [1] 1 2 3
#> 
#> [[3]]
#> [1] 1 2 3

另一种可能的解决方案:

lapply(m, identity)

#> [[1]]
#> [1] 1 2 3
#> 
#> [[2]]
#> [1] 1 2 3
#> 
#> [[3]]
#> [1] 1 2 3

你可以试试

> m[,1]
[[1]]
[1] 1 2 3

[[2]]
[1] 1 2 3

[[3]]
[1] 1 2 3

1) 尝试 c

m <- matrix(replicate(3, list(1:3)))
c(m)

给予

[[1]]
[1] 1 2 3

[[2]]
[1] 1 2 3

[[3]]
[1] 1 2 3

2) 处理内部表示可能不是一个好主意,但这确实有效:

structure(m, .Dim = NULL)