16

プロットを作成する関数を作成しました。私が遭遇する問題の1つは、再現可能なグラフを作成する必要があることです。もちろん、1つの解決策は、作成する各プロットのコードを保存することです(つまり、関数の引数に設定した正確な値を保存します)。しかし、データオブジェクトなどを含むすべての入力値をキャプチャし、それらをリストに保存して出力として返す方法があるのではないかと思います。それを行う簡単な方法は、次のとおりだと思います。

plot.foo <- function(x, main=NULL){
    plot(x, main=main)
    list(data=x, main=main)
}

ただし、私が作成した関数には、省略記号引数(以下を参照)に加えて多数の引数があるため、すべての入力引数値を保存するより速い方法があるかどうか疑問に思います。ありがとう!

plot.foo <- function(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10,...){
     ...
}
4

2 に答える 2

18

役立つ可能性のあるさまざまな関数があります。次にmatch.call、引数match.argを抽出するための特定のメソッドがあります。...

plot.foo <- 
   function(x, main=NULL){ 
     cl <- match.call()
     print(cl)
     plot(x, main=main)
     list(data=x, main=main)
   }

plot.foo(1)
## plot.foo(x = 1)
## $data
## [1] 1
## 
## $main
## NULL

plot.foo <- 
  function(x, main=NULL, ...){ 
    extras=list(...)
    print(extras)

    cl <- match.call()   
    print(cl)

    plot(x, main=main)  # this would actually produce the grapjic
    list(data=x, main=main, extras=extras) # this returns the arguments as a list
   }

plot.foo(1, sthg="z")
## $sthg
## [1] "z"

# You could assign the returned list to a name or you could `save` to a file
plot.foo(x = 1, sthg = "z")
## $data
## [1] 1
## 
## $main
## NULL

sys.call結果を。付きのテキストとして返すことができる関数もありますdeparse

于 2013-03-13T17:19:32.510 に答える
7

最初から、すべてのプロット引数の名前付きリストを作成します

L <- list(x=data, main="string", ylim=c(0,10))

次に、そのオブジェクトをパラメーターのセットとして使用してプロットします

do.call("plot", L)

後で使用するために、必ずLを保存してください。

実例:

L<-list(x=1:10, y=(1:10)^2, main="Y by X",type="l",xlab="X",ylab="Y")
do.call("plot",L)
于 2013-03-13T17:18:49.773 に答える