Как я могу создать функцию, которая возвращает вектор в R? - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу создать функцию, которая возвращает свой результат в виде вектора, более конкретно, функцию, которая возвращает делители входного значения и помещает их в вектор.

divisors<-function(n){
  i <- 2
  c<-1

    x<-c()

      while(i <= n) {
        if(n%%i==0) {
        x[c]<-i  

        }
        i <- i + 1
        c<-c+1
        x


      }

    }

1 Ответ

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

Вам просто нужен оператор return в конце функции. Вы также должны иметь c <- c+1 внутри оператора if. Вот улучшенная версия вашей функции:

divisors <- function(n) {
    i <- 2
    c <- 1
    x <- c()
    while(i <= n) {
        if(n %% i==0) {
            x[c] <- i
            c <- c+1
            }
        i <- i + 1
        }
    return (x)
    }

Более быстрая версия может выглядеть так:

divisors <- function(n) {
    x <- n / (n-1):1
    x[round(x) == x]
    }

, который не использует оператор return, но возвращает последнее вычисленное выражение (а именно x[round(x) == x]).

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