我想编写一个if循环,可能会得到与以下结果相同的结果:
K = ifelse(arg1 < arg2,1,2)
,其结果是:
K = {1,2,1,1,2,2,1,...}
我正在尝试这样做:
if (arg1 < arg2) {
K = 1;
if (arg1 > arg2) {
K = 2;
}
}
但这给了我一个错误the condition has length > 1 and only the first element will be usedthe condition has length > 1 and only the first element will be used.
我实际上希望使用if-else,但是我很难实现它。
答案 0 :(得分:1)
您之所以会收到警告,是因为length(arg1)
大于1,并且if
在给定时间只能处理一个值,因此即使您将整个arg1
都传递给它,它也会默认情况下,仅采用第一个值,即arg1[1]
。
类似的事情应该起作用
arg1 <- 10:1
arg2 <- 5:14
K <- numeric(length = length(arg1))
for (i in seq_along(arg1)) {
if (arg1[i] < arg2[i])
K[i] = 1
else
K[i] = 2
}
K
#[1] 2 2 2 1 1 1 1 1 1 1
与ifelse
ifelse(arg1 < arg2, 1, 2)
#[1] 2 2 2 1 1 1 1 1 1 1
确保length
的{{1}}与arg1
的相同。