计算向量中的特定元素

Counting specific elements in a vector

我正在搜索一个函数 f 计算向量中特定值的出现次数。

例如输入是:

value = c(1,3)
vec   = c(1,1,3,1,3,4,4,5,5,3,1)

输出如下:

1 3 
4 3 

对于另一个输入:

value = c(1,77,3,99)
vec   = c(1,1,3,1,3,4,4,5,5,3,1)

输出为:

1 77  3 99 
4  0  3  0 

因此它也适用于字符、日期等,向量可以处理的每种类型。

这个函数可以完成这项工作:

countOcurrences = function(values, vec)
{
    setNames(sapply(values, function(u) sum(vec==u)), values)
}

但是我想知道是否有一些未知的包中存在一些函数来完成这项工作?

更新

正如@akrun 在评论中指出的那样,factor 可能是您真正要查找的内容:

value = c(1,3)
vec   = c(1,1,3,1,3,4,4,5,5,3,1)
table(factor(vec, value))
# 
# 1 3 
# 4 3 

value = c(1,77,3,99)
vec   = c(1,1,3,1,3,4,4,5,5,3,1)
table(factor(vec, value))
# 
#  1 77  3 99 
#  4  0  3  0 

为什么不直接使用 table

temp <- table(vec)
temp[names(temp) %in% value]
# vec
# 1 3 
# 4 3 

另一个考虑可能是使用 "data.table",像这样:

library(data.table)
data.table(vec, key = "vec")[, .N, by = vec][J(value)]
#    vec N
# 1:   1 4
# 2:   3 3