我对以下R代码的结果感到困惑:
ifelse(TRUE, c(2, 3, 4), "a")
#[1] 2
我的结果是2
,但我希望它是2, 3, 4
,为什么会这样?
我对以下R代码的结果感到困惑:
ifelse(TRUE, c(2, 3, 4), "a")
#[1] 2
我的结果是2
,但我希望它是2, 3, 4
,为什么会这样?
来自帮助文档中的?ifelse
:
"ifelse返回一个与测试条件相同结构的值,该值由从yes或no选择的元素填充,具体取决于测试条件是TRUE还是FALSE。"
我认为这是说如果测试条件是长度为一的向量(比如TRUE),则它也会返回长度为一的值。如果测试条件的长度为两个,则它将返回长度为两个的值。(必要时使用指定值的元素进行循环)
> ifelse(TRUE, c(2,3,4), "a")
[1] 2
> ifelse(c(TRUE,TRUE), c(2,3,4), "a")
[1] 2 3
> ifelse(c(FALSE,FALSE), c(2,3,4), "a")
[1] "a" "a"
首先,您应该将数据和代码作为文本而不是图像发布。
其次,ifelse
用于向量(其长度>1),对于标量(长度=1)请使用 if
/else
。
if(TRUE) c(2, 3, 4) else 'a'
#[1] 2 3 4
if(FALSE) c(2, 3, 4) else 'a'
#[1] "a"
?ifelse
中可以得知:"ifelse返回一个与测试(test)形状相同的值,该值填充了从yes或no中选择的元素,具体取决于测试元素是否为TRUE或FALSE。" 我认为这是说如果您的测试是一个长度为一的向量(如您的TRUE
),则它返回一个长度为一的值。尝试将TRUE
替换为c(TRUE,TRUE)
,以查看此示例。 - Jon Spring