6

私はRチュートリアルを行っています。私は関数に取り組んできましたが、関数の一部の1つは、引数を取り、それを使用してデータを検索するディレクトリを定義することです。次に、そのデータをロードする必要があります。

現状では、次の作品があります。

getmonitor <- function(id, directory){

csvfile <- function(id) {
    if (id < 10) { 
        paste0(0,0,id,".csv")
    } else if (id < 100) {
        paste0(0,id,".csv")
    } else paste0(id,".csv")
}

foo <- read.csv(csvfile(id))

}

罰金。ただし、「directory」パラメータを使用して、csvファイルを読み取る必要のあるディレクトリを定義する必要があります。私はここでいろいろなことを試みましたが無駄になりました。

現在、データが作業ディレクトリにあると想定されている場合、コードは機能します。「(directory)というディレクトリに移動してからread.csv」と言う必要があります。

すべてのデータファイルを含むディレクトリは「specdata」と呼ばれるため、ディレクトリのパラメータは「specdata」になります。

私は次のことを試しました:

getmonitor <- function(id, directory){

  csvfile <- function(id) {
      if (id < 10) { 
          paste0(0,0,id,".csv")
      } else if (id < 100) {
          paste0(0,id,".csv")
      } else paste0(id,".csv")
  }

  filepath <- append(directory,"/",csvfile(id))

  foo <- read.csv(filepath)

 }

しかし、その後、「!afterのエラー:無効な引数タイプ」というエラーメッセージが表示されました。

私はいくつかのさまざまなことを試しましたが、すべてのコードをカットアンドペーストすると、おそらくヘルプよりも面倒です。

これを行うための論理的な方法は何でしょうか?私はappendで正しい方向に進んでいますか?そうでない場合、他に何を訴えるべきですか?パラメータ「ディレクトリ」を取得して、そのディレクトリからデータをロードする必要があります。

4

1 に答える 1

7
getmonitor <- function(id, directory=getwd(), ...){

  csvfile <- sprintf("%03d.csv", id)

  filepath <- file.path(directory, csvfile)

  foo <- read.csv(filepath, ...)

  foo

 }
于 2013-01-16T00:47:28.137 に答える