2

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」にデータがありません。ですから、構文にはいくつかの基本的な問題があると思います。誰かが私を助けることができますか?

4

1 に答える 1

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)   
}
于 2013-01-22T10:29:20.507 に答える