【问题标题】:Unlist an structure of list of matrix in R在R中列出矩阵列表的结构
【发布时间】:2017-01-02 09:12:34
【问题描述】:

我有一个对象类型列表,上面有一个嵌套矩阵,类似于以下示例:

[[1]]
    [,1] [,2]
[1,]  A    A
[2,] A1   A2
[[2]]
    [,1]
[1,]  B 
[2,]  C
[[3]]
      NA

我需要取消列出每个矩阵并旋转结果,因为我需要获取具有以下结构的 data.frame:

A   A1
A   A2
B   C

我尝试使用 unlist 函数来执行此操作,但它取消了所有内容(也将参数递归声明为 False),结果是:

A, A1, A2, B, C, NA 

抱歉,因为我目前没有可用的代码,也无法粘贴详细的示例。当我在家时,我会更新消息。

提前感谢您的帮助。

【问题讨论】:

  • 在您执行 unlist() 之后添加一个 matrix() 指定 ncol=byrow= 参数
  • 类似于 matrix(unlist(df)[!is.na(unlist(df))], ncol = 2, byrow = T) 的东西,其中 df 是您的 list

标签: r list matrix


【解决方案1】:
L <- list(matrix(c("A", "A1", "A", "A2"), 2), matrix(c("B", "C"), ncol = 1), NA)

do.call(rbind, lapply(L, function(x) if (length(x) == 1L && is.na(x)) NULL else t(x)))
#     [,1] [,2]
#[1,] "A"  "A1"
#[2,] "A"  "A2"
#[3,] "B"  "C

【讨论】:

  • 非常感谢,看来结果完全符合我的需要!今晚我会用真正的代码试试,然后更新我的答案。最好的问候。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 2019-01-27
  • 2020-11-30
  • 1970-01-01
  • 2012-09-27
  • 2019-04-05
  • 2021-03-19
相关资源
最近更新 更多