运行后我得到了一个意想不到的结果:

 test = c(rep(FALSE, 2), rep(TRUE, 6))
 ifelse(test, c(1:8)[test], 1)
[1] 1 1 5 6 7 8 3 4

我本来期望 1 1 3 4 5 6 7 8yesifelse(test, yes, no) 的索引被翻转了。也许我需要更多的咖啡,但如果有人能解释这个结果背后的逻辑,我将不胜感激。

最佳答案

ifelse 中向量的长度应该相同。在 OP 的代码中,第二个参数再次被子集化,而第三个参数 1 被回收(虽然很好)

ifelse(test, 1:8, 1)
#[1] 1 1 3 4 5 6 7 8

它在 ?ifelse 的文档中进行了解释



这里,'yes'、'no' 表示 ifelse 中的一般用法参数

关于R ifelse - 矢量顺序的意外变化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44699799/

10-12 19:10