为什么ifelse函数只返回作为参数提供的向量的第一个元素?

我对以下 R 代码的结果感到困惑:

ifelse(TRUE, c(2, 3, 4), "a")
#[1] 2

结果是2,但我预期是2, 3, 4。为什么是这样?

回答

从帮助?ifelse

“ifelse 返回一个与 test 具有相同形状的值,其中填充了从 yes 或 no 中选择的元素,具体取决于 test 的元素是 TRUE 还是 FALSE。”

我认为这是说,如果您的测试是长度为 1 的向量(如您的 TRUE),它也会返回长度为 1 的值。如果测试的长度为 2,它将返回长度为 2 的值。(如有必要,回收指定值的元素。)

> 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函数只返回作为参数提供的向量的第一个元素?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>