大或變小,我有以下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")
}
我想知道,如果在列表中的下一個號碼是更大或更小。 它總是打印更大。我猜是因爲我做錯了。 任何幫助將是偉大的.. 謝謝
大或變小,我有以下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")
}
我想知道,如果在列表中的下一個號碼是更大或更小。 它總是打印更大。我猜是因爲我做錯了。 任何幫助將是偉大的.. 謝謝
您可以使用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
矢量化版本會更有效,更容易在我看來理解。
真棒。謝謝。這正是我一直在尋找的。我是否也可以附加到列表而不是打印?再次感謝! – digit
只需將'ifelse'賦給一個向量並停止打印:'res < - ifelse(yd> 0,'big','small')'。 – Justin
太棒了。這正是我想要的。再次感謝 !!! – digit