我有以下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")
}
我想知道列表中的下一个数字是大还是小。 它总是打印得更大。我猜是因为我做错了。 任何帮助都会很棒.. 感谢
答案 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]