R 为什么替换(变量_x)获取一个数值而不是“name”对象
这是我的密码:R 为什么替换(变量_x)获取一个数值而不是“name”对象,r,R,这是我的密码: divider <- function(numerator, denominator){ if(denominator == 0) { message(class(substitute(denominator))) } numerator / denominator } divider(3, 0) 它的结果是'numeric'版本R3.4.3,我无法理解这一点。它应该是“name”对象 仅当您将命名对象传递给它时,它才会是n
divider <- function(numerator, denominator){
if(denominator == 0)
{
message(class(substitute(denominator)))
}
numerator / denominator
}
divider(3, 0)
它的结果是'numeric'版本R3.4.3,我无法理解这一点。它应该是“name”对象 仅当您将命名对象传递给它时,它才会是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
正如在对答案的评论中所指出的,替换的帮助文件中对此进行了解释,请参见帮助替换:
结果的模式通常是调用,但原则上可以是任意模式
类型特别是,单变量表达式具有模式名和
常数具有适当的基本模式。”
只有当您传递一个命名对象时,它才会是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
正如在对答案的评论中所指出的,替换的帮助文件中对此进行了解释,请参见帮助替换:
结果的模式通常是调用,但原则上可以是任意模式
类型特别是,单变量表达式具有模式名和
常数具有适当的基本模式。”
哦,我的上帝!我没有注意到命名对象和仅“0”之间的区别。多谢各位@好吧,没问题,很高兴有帮助@Tal.和right from?substitute:“结果的模式通常是调用,但原则上可以是任何类型。特别是,单变量表达式具有模式名称,常量具有适当的基模式。“。许多函数(尤其是基本函数)的“帮助”页面都有一个“值”部分,当您遇到此类问题时,应立即检查该部分。@Moody\u mudscapper从帮助文件中引用了一段很好的话。我将在结尾加上这一点作为解释,并适当考虑course@Moody_Mudskipper虽然我已经读了帮助页,但还是没听清楚。。非常抱歉。谢谢你,我的天啊!我没有注意到命名对象和仅“0”之间的区别。多谢各位@好吧,没问题,很高兴有帮助@Tal.和right from?substitute:“结果的模式通常是调用,但原则上可以是任何类型。特别是,单变量表达式具有模式名称,常量具有适当的基模式。“。许多函数(尤其是基本函数)的“帮助”页面都有一个“值”部分,当您遇到此类问题时,应立即检查该部分。@Moody\u mudscapper从帮助文件中引用了一段很好的话。我将在结尾加上这一点作为解释,并适当考虑course@Moody_Mudskipper虽然我已经读了帮助页,但还是没听清楚。。非常抱歉。谢谢你的设备