Вы можете использовать diff
для этого.
yd <- diff(y)
ifelse(yd > 0, print('bigger'), print('smaller'))
Причина, по которой ваш цикл всегда печатает больше, потому что 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
будет намного эффективнее и понятнее.
Следующее решение не идеально, но я все еще думаю, что стоит поделиться с вами. Я адаптировал ее из к этой более или менее похожей проблеме, хотя проблема линкования немного отличается. Как видите, выравнивание не идеальное. Возможно, вам придется немного подправить его. Мне пришлось удалить title_fontsize
из plt.legend()
, так как кажется, что он не совместим с matplotlib 2.2.2
.
matplotlib.rcParams['text.usetex'] = True
matplotlib.rcParams['text.latex.preview'] = True
# Plot legend
legend_labels = [r'$\quad \quad \quad \textsc{Prev.} < %i\%% % (15),
r'$%i\%% \leq \textsc{Prev.} < %i\%% % (15, 25),
r'$%i\%% \leq \textsc{Prev.} < %i\%% % (25, 35),
r'$%i\%% \leq \textsc{Prev.} < %i\%% % (35, 45),
r'$%i\%% \leq \textsc{Prev.} % (45)]