计算向量中的特定元素

时间:2015-01-11 18:19:24

标签: r

我正在搜索函数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)
}

但是我想知道在某些未知的包中是否存在某些功能吗?

1 个答案:

答案 0 :(得分:3)

更新

正如@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 

另一个考虑因素可能是使用&#34; data.table&#34;,如下所示:

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