R ifelse序列始终为0

时间:2014-04-07 08:54:29

标签: r if-statement sequence

我想要某个案例的序列。为此,我使用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。

最佳,

2 个答案:

答案 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