从R中的函数返回结果

时间:2013-01-22 10:25:01

标签: r function loops syntax

我在尝试创建一个包含R中的循环的函数时遇到了一些麻烦。循环工作正常但是当我把它放在函数体内时它不会再写任何输出了。

所以给出我的数据:

    df1<-data.frame(a=sample(1:50,10),b=sample(1:50,10),c=sample(1:50,10))

我创建了一个向量来存储我的结果和一个带有某个函数的循环

    result <- vector("list",10)

    for (i in 1:10)
    {
      result[[i]] <- df1*i
    }

当我尝试创建这样的函数时

    # make the loop a function
    result2 <- vector("list",10)

    loop.function<-
      function(x,a,b){
        for (i in a:b)
      {
        result2[[i]] <- x*i
      }
    }
    loop.function(df1,1,10)

我在“result2”中没有数据。所以我认为语法中存在一些基本问题。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:5)

您的函数不会返回它创建的列表。您需要添加return命令:

result2 <- vector("list",10)

loop.function<-
  function(x,a,b){
    for (i in a:b)
  {
    result2[[i]] <- x*i
  }
  return(result2) # added this row
}

顺便说一下:可以使用lapply

创建此函数的较短版本
myfun <- function(x, a = 1, b) {
    lapply(seq(a, b), "*", x)   
}