【发布时间】:2013-04-04 17:54:45
【问题描述】:
我有一个包含 10,000 个向量的列表,每个向量可能有不同的元素和不同的长度。我想知道我有多少个唯一向量以及每个唯一向量出现在列表中的频率。
我想要走的路是函数“唯一”,但我不知道如何使用它来获取每个向量的重复次数。
所以我想得到的是这样的:
“a”“b”“c”d”301
“一”277
"b" c" 49
作为字母、每个唯一向量的内容和数字,重复频率。
我非常感谢任何可能的帮助。
非常感谢您。
蒂娜。
【问题讨论】:
我有一个包含 10,000 个向量的列表,每个向量可能有不同的元素和不同的长度。我想知道我有多少个唯一向量以及每个唯一向量出现在列表中的频率。
我想要走的路是函数“唯一”,但我不知道如何使用它来获取每个向量的重复次数。
所以我想得到的是这样的:
“a”“b”“c”d”301
“一”277
"b" c" 49
作为字母、每个唯一向量的内容和数字,重复频率。
我非常感谢任何可能的帮助。
非常感谢您。
蒂娜。
【问题讨论】:
也许你应该看看table:
一些示例数据:
myList <- list(A = c("A", "B"),
B = c("A", "B"),
C = c("B", "A"),
D = c("A", "B", "B", "C"),
E = c("A", "B", "B", "C"),
F = c("A", "C", "B", "B"))
将你的向量粘贴在一起并制成表格。
table(sapply(myList, paste, collapse = ","))
#
# A,B A,B,B,C A,C,B,B B,A
# 2 2 1 1
您没有指定顺序是否重要(即 A、B 是否与 B、A 相同)。如果是这样,您可以尝试以下方法:
table(sapply(myList, function(x) paste(sort(x), collapse = ",")))
#
# A,B A,B,B,C
# 3 3
将其包装在 data.frame 中以获得垂直输出而不是水平输出,这可能更易于阅读。
此外,请务必按照已向您建议的方式阅读 How to make a great R reproducible example?。
事实上,我只是猜测你想要做什么。
【讨论】:
rle(sort(sapply(myList, paste, collapse = ","))) 会更慢还是更快? R 中的 TIMTOWDI 让我大吃一惊……[明天我总是可以尝试一些玩具示例,是的……但也许这很微不足道]