Зарезервировать eval выражения как замещенную строку - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь запустить некоторый код на сервере 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, но я хотел бы знать, как это сделать правильно.

...