在函数内部,我想将变量设置为相应的参数,如果该参数为NULL,则设置为默认值。代码如下:
rcontrol <- ifelse(is.null(rcontrol),rpart.control(cp=0.001,minbucket=100,minsplit = 5),rcontrol)
我花了很长时间才发现rcontrol
与以这种方式定义的rcontrol <- rpart.control(cp=0.001,minbucket=100,minsplit = 5)
不一样:
ifelse
任何人都可以解释{{1}}的这种奇怪的行为吗?
答案 0 :(得分:3)
密钥位于?ifelse
:
'ifelse'返回与'test'形状相同的值
(重点补充)。由于is.null(rcontrol)
是一个1元素的逻辑向量,所以你得到的是一个1元素的东西(在这种情况下是rcontrol
的第一个元素)。
您正在寻找:
if (is.null(rcontrol)) { rcontrol <- rpart.control(cp=0.001,minbucket=100,minsplit = 5) }
或
rcontrol <- if (is.null(rcontrol)) [...] else rcontrol
(在这种情况下,第一个成语似乎更合适,因为如果测试为假,你不对rcontrol
做任何事情)