计算向量中的特定元素
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
我正在搜索一个函数 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