我是一个 R 新手,我被一个看似简单的问题所困扰,但却触及了关于如何以及何时在 R 中评估事物的非常深刻的问题。
我经常使用 Rserve;远程评估事物的典型语法重复输入有点麻烦:
RSeval(connection, quote(try(command)))
Run Code Online (Sandbox Code Playgroud)
所以我想要一个函数 r 只用调用来做同样的事情:
r(command)
Run Code Online (Sandbox Code Playgroud)
我的第一次天真的尝试注定会失败:
r <- function(command) {
RSeval(c, quote(try(command)))
}
Run Code Online (Sandbox Code Playgroud)
您已经猜到了:这实际上是发送try(command)到我困惑的 Rserve 守护进程。我希望command得到部分评估,如果这有意义的话——即被我作为参数输入的内容替换,但不在本地评估它。
我寻找解决方案,浏览了引用、替代、评估、调用等的文档。但我找不到有效的东西。要么command在本地进行评估,要么根本不评估。
这不是一个大问题,我可以quote(try())一直输入整个该死的东西;但此时我最好奇的是如何让它发挥作用!
编辑:关于我想要做什么的更多解释。
command理想情况下是对函数的调用,即不是字符串。类似于a <- 3orassign("a", 3)而不是"a<-3"or 的东西quote(a<-3)。我相信这就是这件事变得棘手的部分原因。似乎很难告诉 R 不要在本地评估它,而只是按字面意思发送它。基本上我希望我的函数有点像quote(),它不评估它的参数。RSeval(c, quote(try())). 在这一点上,我认为这更像是对 R 微妙之处的有趣探究:-)| 归档时间: |
|
| 查看次数: |
1543 次 |
| 最近记录: |