Вам просто нужен оператор 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]
).