почему Substitute (variable_x) получает числовое значение вместо объекта name - PullRequest
0 голосов
/ 10 октября 2018

Это мои коды:

divider <- function(numerator, denominator){
    if(denominator == 0)
    {
        message(class(substitute(denominator)))
    }
    numerator / denominator
}
divider(3, 0)

Его результат - «числовой» (версия R 3.4.3), я не мог этого понять.Это должен быть объект name.

1 Ответ

0 голосов
/ 10 октября 2018

Это будет name, только если вы передадите ему именованный объект;попробуйте следующее:

divider <- function(numerator, denominator){
    if(denominator == 0)
    {
        message(class(substitute(denominator)))
    }
    numerator / denominator
}
x = 3
y = 0
divider(x, y)

# name
# [1] Inf

divider(3, 0)

# numeric
# [1] Inf

Как указано Moody_Mudskipper в комментариях к ответу, это объясняется в файле справки для substitute() (см. help("substitute")):

Режим результата, как правило, "вызов", но в принципе может быть любого типа.В частности, выражения с одной переменной имеют режим «имя», а константы имеют соответствующий базовый режим. '

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