ifelse函数是否有错误?

时间:2019-01-12 10:43:35

标签: r if-statement

这是我的载体:

x <- c("a", "b", "c")

我将只从向量中提取奇数元素,所以我写这样的东西:

ifelse(length(x) > 0, x[seq(from = 1, to = length(x), by = 2)], NA)

但是返回的结果仅仅是"a"。但是,如果我检查条件并单独运行TRUE语句,则会得到不同的结果。

length(x) > 0   #TRUE
x[seq(from = 1, to = length(x), by = 2)]   # "a" "c"

有人知道为什么吗?谢谢!

1 个答案:

答案 0 :(得分:1)

根据?ifelse

  

具有相同的长度和属性(包括尺寸和“类”)的矢量,它们是来自“是”或“否”值的测试和数据值

其中“ test”,“ yes”,“ no”是参数

ifelse(test, yes, no)

在相关示例中,“测试”,“是”,“否”之间的长度不匹配。第一个返回长度为1的逻辑向量,第二个为2,第二个为三分之一。这造成了不平衡。在此示例中,它是TRUE,因此它将返回“ yes”的第一个元素。相反,我们可以使用if/else

if(length(x) > 0) x[seq(from = 1, to = length(x), by = 2)] else NA
#[1] "a" "c"