注意:通常不要以大写字母开头用户创建的符号名称,因为这些可能与内部函数冲突。
我不清楚您希望如何转换输出。一种解释是您只想:
{166302, 333668, 332964, 167066}
在您使用的代码[[2, 1]]
中,我假设您知道如何使用Part
,这是一种简短形式。的文档Part
包括:
如果任何列表i是All
或;;
,则保留该级别的所有部分。
因此,您可以使用:
Tally[list][[All, 2]]
您还可以使用:
Last /@ Tally[list]
作为乔治评论你可以使用Sort
,由于Tally
数据的结构,它会首先按项目排序,因为它首先出现在每个列表中,并且每个列表具有相同的长度。
tally =
{{{"b","b"},166302},{{"b","a"},333668},{{"a","b"},332964},{{"a","a"},167066}};
Sort[tally][[All, 2]]
{167066, 332964, 333668, 166302}
您还可以将数据转换为Rule
对象列表,然后从预定列表中提取值:
rules = Rule @@@ tally
{{"b", "b"} -> 166302, {"b", "a"} -> 333668, {"a", "b"} -> 332964, {"a", "a"} -> 167066}
这些可以按您选择的任何顺序排列:
{{"a", "a"}, {"a", "b"}, {"b", "a"}, {"b", "b"}} /. rules
{167066, 332964, 333668, 166302}
仅仅为了说明另一种技术,如果您有想要计算的特定项目列表,您可能会在其中找到价值Sow
并Reap
构建。例如,有一个随机列表"a", "b", "c", "d"
:
SeedRandom[1];
dat = RandomChoice[{"a", "b", "c", "d"}, 50];
计算"a"
和"c"
元素:
Reap[Sow[1, dat], {"a", "c"}, Tr[#2] &][[2, All, 1]]
{19, 5}
这不如为每个元素执行 a 快,Tally
但它比Count
为每个元素执行 a 快,有时语法很有用。