Почему `ave` с` table` возвращает символ, если первым аргументом является символ? - PullRequest
1 голос
/ 11 июля 2020

Рассмотрим два вектора 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".

Это ошибка или особенность?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...