У меня есть этот фрейм данных:
> new
median
1 3.957587
2 3.957587
3 3.957587
4 3.957587
5 3.957587
6 3.957587
7 3.249960
8 3.249960
9 3.249960
10 3.249960
11 3.249960
12 3.249960
13 2.962515
14 2.962515
15 2.962515
16 2.962515
17 2.962515
18 2.962515
Теперь я сравниваю эти медианные значения с этой командой:
# if difference of median values is bigger than 50%, get index of where this is happens
# returns numeric(0) when condition not met
results <- which(c(0, abs(diff(new$median))) > 0.5 * new$median) - 1
Это работает отлично.
То, что я хочу сделать сейчас, - это когда разница медианных значений составляет менее 50% (условие не выполнено), просто получите индекс того, где медианные значения меняются.Я мог бы сделать это так:
> testing <- which(new$median[-1] != new$median[-length(new$median)])
> testing
[1] 6 12
Я поместил эти две идеи в утверждение ifelse:
> results <- ifelse(length(results) == 0, testing, results)
> results
[1] 6
Но это просто дает мне первое число, а не второе.Почему?