【问题标题】:Using rbind on matrices in nested lists?在嵌套列表中的矩阵上使用 rbind?
【发布时间】:2021-11-17 07:43:39
【问题描述】:

我在 R 中工作,我有一个数据集,它是矩阵列表的列表。主列表中的每个子列表都有两个相同维度的矩阵(10 行 x 2 列)。我想将rbind() 每个矩阵列表放入一个矩阵(20 行 x 2 列)。但我不想将每个子列表组合成一个大矩阵。我会尽力为它写一个示例代码,但实际数据非常复杂,所以我会尽力而为。

> matrix_1 <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 5, ncol = 2, byrow = TRUE)
> matrix_2 <- matrix(c(9, 8, 7, 6, 5, 4, 3, 2, 1), nrow = 5, ncol = 2, byrow = TRUE)
> matrix_3 <- matrix(c(101, 91, 81, 71, 61, 51, 41, 31, 21, 11), nrow = 5, ncol = 2, byrow = TRUE)
> matrix_4 <- matrix(c(22, 20, 19, 18, 17, 16, 15, 14, 13, 12), nrow = 5, ncol = 2, byrow = TRUE)

> sublist_1 <- list(matrix_1, matrix_2)
[[1]]
     [,1] [,2]
[1,]    1    5
[2,]    2    6
[3,]    1    3
[4,]    7    4
[5,]    8    3

[[2]]
     [,1] [,2]
[1,]   10    9
[2,]    8    7
[3,]    6    5
[4,]    4    3
[5,]    2    1

> sublist_2 <- list(matrix_3, matrix_4)
[[1]]
     [,1] [,2]
[1,]  101   91
[2,]   81   71
[3,]   61   51
[4,]   41   31
[5,]   21   11

[[2]]
     [,1] [,2]
[1,]   22   20
[2,]   19   18
[3,]   17   16
[4,]   15   14
[5,]   13   12

> mainlist <- list(sublist_1, sublist_2)

我真正想做的是:

> rbind(sublist_1[[1]], sublist_1[[2]])
      [,1] [,2]
 [1,]    1    5
 [2,]    2    6
 [3,]    1    3
 [4,]    7    4
 [5,]    8    3
 [6,]   10    9
 [7,]    8    7
 [8,]    6    5
 [9,]    4    3
[10,]    2    1

应用于主列表中的所有子列表。

我尝试使用lapplymapplymapdo.call 等的各种组合来使其工作,但要么我不知道正确的组合,要么我需要其他东西.

我还注意到rbind(sublist_1) 不起作用,这使得lapply 难以使用。必须写成rbind(sublist_1[[1]], sublist_1[[2]])

非常感谢您的帮助。

【问题讨论】:

    标签: r matrix lapply nested-lists rbind


    【解决方案1】:

    循环外部list,将内部list元素转换为data.frame,并使用do.callrbind

    out <- lapply(mainlist, function(x)  do.call(rbind, lapply(x, as.data.frame)))
    

    【讨论】:

      猜你喜欢
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 2022-01-12
      • 2017-05-26
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多