找出R中的值是下一个值是更大还是更小

时间:2014-01-29 15:08:02

标签: r

我有以下R代码:

y <-round(runif(100, min=0, max=800))
for(i in y) {
  if((i+1)>i) print("bigger") 
  if((i+1)<i) print("smaller")
}

我想知道列表中的下一个数字是大还是小。 它总是打印得更大。我猜是因为我做错了。 任何帮助都会很棒.. 感谢

2 个答案:

答案 0 :(得分:3)

您可以使用diff

yd <- diff(y)
ifelse(yd > 0, print('bigger'), print('smaller'))

你的for循环总是打印得更大的原因是因为i总是小于i+1 ...看看你问的是什么......你的意思是y[which(y==i) + 1] > i或者什么。 ..如果你必须使用循环,你可以这样做:

for (i in seq_along(y)) {
  if (y[i+1] > y[i]) {
    print('bigger')
  } else {
    print('smaller')
  }
}

但是,在我看来,使用diff的矢量化版本会更有效,更容易理解。

答案 1 :(得分:3)

您可以通过以下方式创建矢量:

c("smaller", "bigger")[(diff(y) > 0) + 1]