Рассмотрим два вектора v1
и v2
,
v1 <- c(3, 3, 3, 3, 2, 2, 2, 1, 1)
v2 <- as.character(v1)
, где их table
дают одинаковый числовой вывод.
table(v1)
# v1
# 1 2 3
# 2 3 4
table(v2)
# v1
# 1 2 3
# 2 3 4
Теперь, ave
ing с числа в качестве первого аргумента дают "numeric"
:
ave(v1, v1, FUN=table)
# [1] 4 4 4 4 3 3 3 2 2
ave(v1, v2, FUN=table)
# [1] 4 4 4 4 3 3 3 2 2
В то время как символ в качестве первого аргумента дает "character"
:
ave(v2, v1, FUN=table)
# [1] "4" "4" "4" "4" "3" "3" "3" "2" "2"
ave(v2, v2, FUN=table)
# [1] "4" "4" "4" "4" "3" "3" "3" "2" "2"
В документации ave
говорится:
Значение
Числовое c вектор, скажем, y
длины length(x)
. [...]
Для меня это означает, что он всегда должен возвращать "numeric"
.
Это ошибка или особенность?