If-Else循环与Ifelse();它们有什么不同以及如何给出相同的结果

时间:2019-02-06 06:29:54

标签: r

我想编写一个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,但是我很难实现它。

1 个答案:

答案 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的相同。