如何创建在R中返回向量的函数?

时间:2018-11-16 01:50:27

标签: r

我想创建一个将其结果作为向量返回的函数,更具体地说,是一个将输入值的除数返回并将其放置在向量中的函数。

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 :(得分:2)

该函数的末尾只需要一个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])。