我想要某个案例的序列。为此,我使用ifelse语句,但我总是收到零。这是一个简单的例子:
seq(0,10, by=1)
[1] 0 1 2 3 4 5 6 7 8 9 10
,而
ifelse (1==1, seq(0,10, by=1), seq(0,10, by=1))
[1] 0
我没有看到,为什么我会在第二种情况下得到0。
最佳,
垫
答案 0 :(得分:2)
你的第一个参数是长度为1 - 所以输出的长度为1.这是真的,所以返回第二个参数的第一个元素,即0。
也许你想要
if (1==1) {
seq(0,10, by=1)
} else {
seq(0,10, by=1)
}
虽然
,但这两段代码都不是很现实答案 1 :(得分:1)
我不认为你完全理解ifelse的用法。您的条件(1 == 1)始终为真,因此您事先知道答案。此外,正面和负面例子的结果是相同的。
您使用ifelse
在特定条件下测试向量。如果向量中的值遵循条件,则返回第一个值,如果它没有,则返回第二个值。例如;
test <- sample(letters[1:2], 100, replace = T)
ifelse(test == "a", 'is a', 'is b')
结果将始终与输入向量的长度相同。如果返回值的长度大于1,则在达到输入向量的长度时将中止ifelse
。这意味着导入向量中的值仍未评估。因此,当您的返回值超过1时,您通常不想使用ifelse
。