R Программирование найти первую запись в списке больше, чем - PullRequest
0 голосов
/ 19 ноября 2018

Предположим, что у нас есть таблица x:

V1   V2   V3     
1    8    18      
95   36  -40     
-67 -68  -27     
192   2   9    
160  105  36

Я хочу найти 1-ую строку в V1, которая больше 100. В нашем случае 192 - это 1-е большее число, чем 100.Поэтому я хочу получить 4 в качестве вывода, потому что 192 - это 4-я строка в V1.

Как мне этого добиться?Я попробовал это:

for (i in 1:length(x$v1){
    if(x[1,i]>=100){
      print(i)
      break}    
}

Но это не сработало.Компилятор R говорит следующее:

Error in if (x[1, i] >= 100) print(i) : argument is of length zero
>         break    
Error: no loop for break/next, jumping to top level
> }
Error: unexpected '}' in "}"

Что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Измените ваш цикл с помощью:

for (i in 1:length(df[,1])){
     if(df[i,1]>=100){
         print(i)
         break}    
}
0 голосов
/ 19 ноября 2018

Мы можем получить индекс столбца первой записи в каждой строке с помощью max.col

j1 = max.col(df1 > 100, 'first')
j2 = j1 * NA^!rowSums(df1 > 100)

Затем извлечь значение с индексацией строки / столбца

na.omit(df1[cbind(seq_len(nrow(df1)), j2)])[1]
#[1] 192

Если мы проверяем только первый столбец, можно использовать which.max

which.max(df1$V1 > 100)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...