比较r中的两个向量,而if和if结构

时间:2018-05-23 23:10:02

标签: r if-statement vector while-loop compare

我一直在尝试用while循环编写这个例子,如果是结构,但我没有设法做到这一点。我的synthax总是有问题。

如果x1> = x2 result = 1 否则结果= -1

x1 x2 result
 5  7   -1
 3  4   -1
 7  2    1

如果有人设法得到正确的合成器,我会非常感激

2 个答案:

答案 0 :(得分:0)

我喜欢使用dplyr来解决这些问题。我们可以比使用循环

更有效地解决这个问题
# make up some data
library(dplyr)
mydat <- data.frame(x = seq(1:10), y = rev(seq(10:1)))


#calculate result

new_data <- mutate(mydat, result = ifelse(x >= y, "1", "-1"))

答案 1 :(得分:0)

有几种方法可以得到你的答案,而且没有一种方法需要 while循环,因为矢量化解决方案必须始终是有趣的。我最喜欢的是:

result = (x1>=X2) -(x1<X2)

但是这种方法做了两次比较,因此效率不高。你可以使用它的数学等价物,即:

result = 2*(x1>=X2) - 1

但是如果你不想使用数学,那么另一种纯粹的R方式就是:

result = rep(1,length(x1))
result[x1<X2] = -1