这是我的载体:
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"
有人知道为什么吗?谢谢!
答案 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"