【发布时间】:2016-10-09 17:12:00
【问题描述】:
我有一个类似的功能
dbh2vol <- function(dbh,hgt,...){
if (missing(hgt)){
hgt = 2
cat("hgt is missing. Set to 2")
}
vol = dbh * hgt
return(vol)
}
如果我然后用
调用它Vol = dbh2vol(dbh=10,hgt=4)
#40
一切都很好。如果我有类似的东西
Vol = dbh2vol(dbh=10,param=4)
#hgt is missing. Set to 2[1] 20
正如预期的那样。但如果我这样做了
Vol = dbh2vol(dbh=10,h=4)
#40
h=4 被解释为hgt=4。为什么以及如何避免这种行为,即参数如何与它们的名称完全匹配?
【问题讨论】:
-
我无法重现这个...为了测试,我只设置了
hgt=2*dbh而不是hgt = some_other_function(dbh)然后运行Vol = dbh2vol(dbh=10,param=4)。我得到的结果Vol是200,如果我设置hgt = 2*dbh则可以预期。 -
我试图重现我提供的最小示例。其实有一件很奇怪的事情。通过
Vol = dbh2vol(dbh=10,param=4)我也得到了正确的结果。如果我更改为Vol = dbh2vol(dbh=10,h=4),那么h这实际上是我在我的代码中的内容,它被识别为hgt。你能检查一下这种行为吗? -
对我来说它看起来像一个错误。如果我使用
hg,则行为相同。看起来如果参数名称至少匹配预期输入的初始部分,则它没有设置为missing
标签: r function arguments missing-data