データセットを取り、その環境で読み取られたデータセットで plot() 関数を出力する R 関数を作成しようとしています。これは、もはや attach() を使用する必要がないことを意味し、これは良い習慣です。これが私の例です:
mydata <- data.frame(a = rnorm(100), b = rnorm(100,0,.2))
plot(mydata$a, mydata$b) # works just fine
scatter_plot <- function(ds) { # function I'm trying to create
ifelse(exists(deparse(quote(ds))),
function(x,y) plot(ds$x, ds$y),
sprintf("The dataset %s does not exist.", ds))
}
scatter_plot(mydata)(a, b) # not working
これが私が得ているエラーです:
rep(yes, length.out = length(ans)) のエラー: タイプ 'closure' のオブジェクトを複製しようとしています
他のいくつかのバージョンを試しましたが、すべて同じエラーが発生します。私は何を間違っていますか?
編集:コードがあまり実用的ではないことを認識しています。私の目標は、関数型プログラミングをよりよく理解することです。私はSASで同様のマクロを書きました.Rで対応するものを書こうとしていましたが、失敗しています. 例としてこれを選んだだけです。これは非常に単純な例だと思いますが、機能していません。