我正在搜索函数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)
}
但是我想知道在某些未知的包中是否存在某些功能吗?
答案 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