Вложено, пока l oop внутри для l oop, итерация только по первому элементу - PullRequest
0 голосов
/ 07 апреля 2020

Мой фрагмент ниже написан на R , чтобы удалить каждый элемент в vector, который кратен x for each x в vector.

Когда функция запускается, l oop работает только для первого элемента в векторе, ie, 2, и не проверяет остальные элементы, такие как 3,4,5,6 , Как я могу это исправить?

my_function <- function(n){
X <- 2:n
i <- 2
 for (x in X){
   while (x*i <= n){
     a <- match(x*i,X)
     X <- X[-(a)]
     i <- i+1
  }
  print(X)
 }
}

1 Ответ

0 голосов
/ 07 апреля 2020

Вы можете использовать следующее:

my_function <- function(n){
  #Create a sequence from 2 to n
  X <- 2:n
  #For every value in X
  for(i in X) {
    #Create a sequence from i + i to n with steps of i
    vals = seq(min(i + i, n), n, i)
    #Check which values in X are multiple
    inds <- X %in% vals
    #If any value is present 
    if(any(inds))
      #Remove it from X
      X <- X[!inds]
     }
     #Return remaining X
     return(X)
}

my_function(6)
#[1] 2 3 5
my_function(12)
#[1]  2  3  5  7 11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...