Как сохранить результаты a для l oop в векторе или списке в R - PullRequest
0 голосов
/ 30 мая 2020

Я хочу запустить простой для l oop и сохранить значения в списке или векторе. Например:

ex = c(10,11,17)



for (i in (0:length(ex))){
  if ex[i] < 12 {
    # store the value in a vector
  }
}

Как я могу это сделать, если я не знаю длину вектора и поэтому не могу сначала определить его?

Ответы [ 3 ]

1 голос
/ 30 мая 2020

Другой базовый вариант R использует na.omit + ifelse

na.omit(ifelse(ex<12,ex,NA))
0 голосов
/ 30 мая 2020

Вы можете выделить вектор максимально возможного размера и заполнить его только частично, а затем уменьшить.

ex = c(10,11,17,9,14,1,20,1)
store <- list(length(ex))
for (i in (1:length(ex))){
  if(ex[i] < 12){
    store[[i]] <- ex[i]
  }
}
unlist(store)

[1] 10 11  9  1  1
0 голосов
/ 30 мая 2020

Вы можете сделать это без for l oop:

ex[ex < 12]
#[1] 10 11

или используя Filter:

Filter(function(x) x < 12, ex)

Однако, если вы хотите сделать это с for l oop вы можете попробовать:

count <- 1
result_vec <- numeric()

for (i in ex) {
   if (i < 12) {
    result_vec[count] <- i
    count <- count + 1
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...