将表达式的eval保留为替换字符串

时间:2019-02-13 02:06:50

标签: r rserve

我正在尝试在需要在运行时替换某些值的Rserve服务器(Rserve_1.7-3)上运行一些代码。这适用于旧式Rclient函数,但不适用于新式RCC函数。我无法弄清楚引用,解析和评估的正确组合才能使它正常工作。

在我的RSclient上,设置如下:

item_a <- "cat"
item_b <- "dog"
code_string <- sprintf('pets <- c("%s","%s")', item_a, item_b)

现在,如果我在本地运行它,那么它会起作用:

pets
# Error: object 'pets' not found
eval(parse(text=code_string))
pets
# [1] "cat" "dog"

使用Rclient,我可以评估一个字符串,但这不适用于RCC。您必须发送一个表达式或带引号的表达式。所以,

# old style, not run, this does work
# RSeval(CON, code_string)

# new style, doesn't work
RS.eval(CON, parse(text=code_string))
# Error in parse(text = code_string) : object 'code_string' not found

# also doesn't work
RS.eval(CON, quote(eval(parse(text=code_string))))
# Error in parse(text = code_string) : object 'code_string' not found

简单的答案是切换回Rclient代码,但我想知道如何正确执行此操作。

0 个答案:

没有答案