3

そこで、Rを使用して、分析しているデータセット用のフォルダーを自動的に作成したいと思います。怠惰のため、このフォルダーを作成し、データを分析し、結果を後で見ることができるようにそのフォルダーに保存する関数が作成されています。

ライブラリ(ロバストベース)の航空機データを使用しようとすると、次のようになります。

setwd("C:/Users/Admin/Desktop/")
analysis<-function(dataset,other_bit_and_pieces){
paste("dir.create(",dataset,")",sep="")
}

analysis(aircraft)

aircraft存在しないというエラーメッセージが表示されるか、 (ライブラリをロードした場合)吐き出されます"dir.create(c( all the data from aircraft))"

データセットを変更するたびにデータセット名で新しいフォルダーが作成されるように、これをどのように書く必要がありますか?

4

2 に答える 2

4

このための一般的なRイディオムはですdeparse(substitute(....))

analysis <- function(object, create = FALSE){
  dirname <- deparse(substitute(object))
  if(create) {
      dir.create(dirname)
  }
  dirname
}

> mydata <- data.frame(x=1:10)
> analysis(mydata)
[1] "mydata"

人々がテストしていて、これが既存のdirを壊してしまう場合に備えて、dirを自動的に作成しないように関数を変更したことに注意してください。それが機能していることを示すために、私はそれを返すようにしdirnameます。実際には、それ以降は何も必要ありませんif()

于 2012-09-11T07:11:34.263 に答える
3

私が理解できることから、次のようなものが機能します

mydata <- data.frame(x=1:10)

analysis <- function(object){
  dir.create(as.character(as.list(match.call())[2]))
}

analysis(mydata)
# will create a directory 'mydata' as a subdirectory of the current working directory.

?match.callこれがどのように機能するか見てください!

于 2012-09-11T06:29:20.530 に答える