基数 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)
考虑这种形式的嵌套矩阵,其中每个元素都是向量、列表或数据框:
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)