在R

时间:2016-09-10 08:11:56

标签: r list rbind

我试图通过执行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)))

1 个答案:

答案 0 :(得分:0)

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

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

这可以成为一个函数

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

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