【问题标题】:Forcing Rbind with uneven columns in R用 R 中的不均匀列强制 Rbind
【发布时间】:2017-01-18 08:10:17
【问题描述】:

我正在尝试通过执行 rbind 将一些列表对象(例如 4 个频率计数表)强制转换为矩阵。但是,它们有不均匀的列(即一些范围从 2 到 5,而另一些范围从 1:5)。我想要显示的是,如果一个表不是以列 1 开头,那么它会在随后的 rbind 矩阵的该行中显示 NA 。我尝试了下面的方法,但是如果不存在,值会在行中重复,而不是显示 NA。 我考虑过 rbind.fill 但它要求表是一个数据框。我可以创建一些循环,但本着 R 的精神,我想知道是否有另一种方法可以使用?

# Example
a <-  sample(0:5,100, replace=TRUE)
b <- sample(2:5,100, replace=TRUE)
c <-  sample(1:4,100, replace=TRUE)
d <- sample(1:3,100, replace=TRUE)

list <- list(a,b,c,d)
table(list[4])

count(list[1])
matrix <- matrix(ncol=5)
lapply(list,(table))

do.call("rbind",(lapply(list,table)))

【问题讨论】:

  • 也许here的答案可以提供帮助。

标签: r list rbind


【解决方案1】:

当我遇到类似问题时,我会在向量中包含我想要的所有值,然后从结果中减去一个

table(c(1:5, a)) - 1

这可以做成一个函数

table2 <- function(x, values, ...){
  table(c(x, values), ...) - 1
}

当然,这将给出零而不是 NA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多