这些是我的代码:
divider <- function(numerator, denominator){
if(denominator == 0)
{
message(class(substitute(denominator)))
}
numerator / denominator
}
divider(3, 0)
它的结果是'数字'(版本R 3.4.3),我无法理解这一点。它应该是'名字'对象。
如果你传给一个命名对象,它只会是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")
):
结果的模式通常是“调用”,但原则上可以是任何类型。特别是,单变量表达式具有模式“name”,常量具有适当的基本模式。