【发布时间】:2021-08-17 01:13:57
【问题描述】:
假设我在 R 中有以下列表:
my_list <- list(structure(c(0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,
0, 0, 0, 0, 1, -1, -1, -1, -1, 0), .Dim = c(1L, 25L)), structure(c(0,
1, -1, 0, 1, -1, 0, -1, -1, 1, 1, 1, 0, 1, 0, 0, 1, -1, 0, 1,
-1, -1, 0, -1, 0), .Dim = c(1L, 25L)), structure(c(0, -1, -1,
0, 1, 1, 0, -1, -1, 1, 1, 1, 0, 1, 0, 0, 1, -1, 0, 1, -1, -1,
0, -1, 0), .Dim = c(1L, 25L)), structure(c(0, -1, -1, 0, 1, 1,
0, 0, -1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, -1, -1, -1, -1, 0), .Dim = c(1L,
25L)), structure(c(0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
1, 0, 0, 0, 0, 1, -1, -1, -1, -1, 0), .Dim = c(1L, 25L)))
这本质上是一个包含 5 个元素的列表,每个元素都是一个数字向量(每个数组的值范围从 -1 到 1 并不重要)。
所以我想找出最频繁的数组。如果你仔细看,你会发现列表中的元素 1 和 5 是相同的。
> all(my_list[[1]] == my_list[[5]])
[1] TRUE
每个其他元素都是独一无二的。所以对于这种情况,我有 4 个唯一的数组,其中一个是最频繁的(在这种情况下,出现两次的那个!)。
我知道unique() 可以解决这个问题,为此案例提供了 4 个独特的元素。
> length(unique(my_list))
[1] 4
所以我想做的是使用table 找出最常见的唯一数组。然而,简单地使用table 会产生非常奇怪的结果。
> table(my_list)
, , my_list.3 = -1, my_list.4 = -1, my_list.5 = -1
my_list.2
my_list.1 -1 0 1
-1 3 0 0
0 0 0 0
1 0 0 0
...
# a lot more strange output from here and on
我在这里缺少什么?我不应该使用表格吗?
【问题讨论】: