从R中的函数返回结果

Jos*_*chi 2 syntax loops r function

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

所以根据我的数据:

    df1<-data.frame(a=sample(1:50,10),b=sample(1:50,10),c=sample(1:50,10))
Run Code Online (Sandbox Code Playgroud)

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

    result <- vector("list",10)

    for (i in 1:10)
    {
      result[[i]] <- df1*i
    }
Run Code Online (Sandbox Code Playgroud)

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

    # 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)
Run Code Online (Sandbox Code Playgroud)

我在"result2"中没有数据.所以我认为语法中存在一些基本问题.谁能帮我吗?

Sve*_*ein 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
}
Run Code Online (Sandbox Code Playgroud)

顺便说一下:可以使用以下命令创建此函数的较短版本lapply:

myfun <- function(x, a = 1, b) {
    lapply(seq(a, b), "*", x)   
}
Run Code Online (Sandbox Code Playgroud)