Если выражение Ifelse истинно, ifelse возвращает только одно значение вместо всех - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть этот фрейм данных:

> 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

Но это просто дает мне первое число, а не второе.Почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...