【问题标题】:From tree list to a matrix in R从树列表到 R 中的矩阵
【发布时间】:2015-11-13 22:15:25
【问题描述】:

抱歉,如果问题太基本。什么是转换的有效方法/想法(在 R 中)

list(c(1), c(1,2), c(1,2,3), c(1,2,3,4))

方阵形式

     [,1] [,2] [,3] [,4]
[1,]    1   NA   NA   NA
[2,]    1    2   NA   NA
[3,]    1    2    3   NA
[4,]    1    2    3    4

我想有一些快速的动态方法可以添加正确数量的 NA 值,然后转换为矩阵。

当然,(方形)矩阵的大小可以改变)。

提前感谢您的宝贵时间。

【问题讨论】:

标签: r list matrix vector tree


【解决方案1】:

你可以使用

## create the list
x <- Map(":", 1, 1:4)

ml <- max(lengths(x))
do.call(rbind, lapply(x, "length<-", ml))
#      [,1] [,2] [,3] [,4]
# [1,]    1   NA   NA   NA
# [2,]    1    2   NA   NA
# [3,]    1    2    3   NA
# [4,]    1    2    3    4

或者你可以这样做

library(data.table)
as.matrix(unname(rbindlist(lapply(x, as.data.frame.list), fill = TRUE)))
#      [,1] [,2] [,3] [,4]
# [1,]    1   NA   NA   NA
# [2,]    1    2   NA   NA
# [3,]    1    2    3   NA
# [4,]    1    2    3    4

还有一个更好的衡量标准...... Fore!

m <- stringi::stri_list2matrix(x, byrow = TRUE)
mode(m) <- "numeric"
m
#      [,1] [,2] [,3] [,4]
# [1,]    1   NA   NA   NA
# [2,]    1    2   NA   NA
# [3,]    1    2    3   NA
# [4,]    1    2    3    4

【讨论】:

    猜你喜欢
    • 2021-03-19
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    相关资源
    最近更新 更多