for循环和R中的功能

时间:2019-03-14 16:00:22

标签: r statistics

我对R完全陌生,并不了解很多。如果有人可以帮助我解决问题,我将不胜感激。这是我第二天尝试针对此问题使用不同的代码,但无法获得任何答案。我知道还有其他与此相关的问题。我已经检查了每个人,但仍然无法理解。请不要将其标记为重复项并提供答案。我真的会很感激。

所以基本上我必须创建一个函数ans(n),该函数返回一个以斐波那契数列的前n个数字为元素的向量。

我知道斐波那契。所以首先我创建了一个vactor:

 ans<-function(n){
 for(i in x){
 return(x[n-1]+x[n-2])
 }}

然后我使用了以下命令:

{{1}}

我要去哪里了?

2 个答案:

答案 0 :(得分:0)

返回值之前,您需要将值存储在向量中。

x = c(1, 1)

ans <- function(n) {
    for(i in 3:n) {
        x = c(x, x[i-1]+x[i-2])
    }
    return(x)
}

输出:

ans(9)
[1]  1  1  2  3  5  8 13 21 34

答案 1 :(得分:0)

Fibbonacci序列的定义代替了for循环,特别适合于递归函数实现。

# Calculate Fibbonacci term x
fib.x <- function(x) {
    if (x <= 1) return(x) else  return(fib.x(x - 1) + fib.x(x - 2))
}

# Return the Fibbonacci sequence of length n
fib <- function(n) sapply(1:n, fib.x)

fib(9)
#[1]  1  1  2  3  5  8 13 21 34

您可以制作此even faster by using Rcpp