我想创建一个将其结果作为向量返回的函数,更具体地说,是一个将输入值的除数返回并将其放置在向量中的函数。
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
}
}
答案 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]
)。