列表中的向量频率

时间:2018-03-02 13:35:14

标签: r list count

假设我有一个列表

MenuViewController

我需要计算所有这些向量,以便所需的输出看起来像:

test <- list(c(1, 2, 3), c(2, 4, 6), c(1, 5, 10), c(1, 2, 3), c(1, 5, 10), c(1, 2, 3))

R中有什么简单的方法可以实现这个目标吗?

2 个答案:

答案 0 :(得分:3)

您可以粘贴并使用table,即

as.data.frame(table(sapply(test, paste, collapse = ' ')))

给出,

    Var1 Freq
1  1 2 3    3
2 1 5 10    2
3  2 4 6    1

答案 1 :(得分:1)

函数unique()可以在列表上运行。对于计数,可以使用identical()

test <- list(c(1, 2, 3), c(2, 4, 6), c(1, 5, 10), c(1, 2, 3), c(1, 5, 10), c(1, 2, 3))
Lcount <- function(xx, L) sum(sapply(L, identical, y=xx))
sapply(unique(test), FUN=Lcount, L=test)
unique(test)

结果为data.frame:

result <- data.frame(
 Set=sapply(unique(test), FUN=paste0, collapse=','),
 count= sapply(unique(test), FUN=Lcount, L=test)
)
result
# > result
#      Set count
# 1  1,2,3     3
# 2  2,4,6     1
# 3 1,5,10     2