Rの初心者ですが、簡単な問題のように思えますが、Rで評価する方法や時期についてはかなり深い疑問があります。未評価のコマンドをRの関数に渡す
私はRserveをかなり使用しています。
RSeval(connection, quote(try(command)))
は、だから私はちょうど呼び出しで同じことをする関数rたい:リモートに評価され、物事を取得するための一般的な構文は、痛みのビットを繰り返し入力することです
r(command)
をマイまず、ナイーブは、関与の試みが失敗にバインド:
r <- function(command) {
RSeval(c, quote(try(command)))
}
をあなたはそれを推測しました:これは、文字通り、私の混乱しRserveデーモンへtry(command)
を送信します。私はcommand
をと部分的にと評価します。つまり、引数として入力したものに置き換えられますが、ではなく、がローカルで評価されます。
私はこれに対する解決策を探して、見積もり、代替、評価、呼び出しなどのドキュメントを閲覧しましたが、うまくいくものを見つけることができませんでした。 command
がローカルで評価されるか、まったく評価されません。
これは大きな問題ではありません、私はすべての時間を入力することができますquote(try())
事;しかし、この時点で、私はこれをうまく動作させる方法について、ほとんど興味があります!
EDIT: 私が何をしたいかについてもっと説明します。
- 上記のテキストでは、
command
は機能を呼び出すためのもので、理想的には文字列ではありません。"a<-3"
またはquote(a<-3)
ではなく、a <- 3
またはassign("a", 3)
のようなものです。 私はこれがこのトリッキーなことの一部であると信じています。 Rにこれをローカルで評価しないように指示するのは本当に難しいようですが、それを文字通り送信するだけです。基本的には、私の関数はquote()
のように、その引数を評価しないようにしたいと思います。 - 私の意図についての説明。リモートRデーモンにコマンドを渡すために、Rserveを頻繁に使用したいと考えています。コマンドは私自身(または私の同僚)で、ファイアウォールと認証で保護されたデーモン(ルートとしては実行されません)です。したがって、悪意のあるコマンドが渡される心配はありません。
- 正直言って、これは大きな問題ではありません。私は常に
RSeval(c, quote(try()))
を使用してとてもうれしいです。この時点で、これはRのサブタイトルへの興味深い問い合わせのようなものです:-)
Rの評価を制御する方法とその中のいくつかの落とし穴を説明しようとしています。https://github.com/hadley/devtools/wiki/Evaluation – hadley
このリンクは現在死んでいます。 –