1

我的用例如下:

  • 显示 GUI 以收集一些 R 表达式
  • 生成包含我的模拟框架的单个源文件,与用户提供的 R 表达式混合
  • 允许用户生成单个源文件。如果用户指定的任何表达式包含错误(语法或运行时),我想以用户友好的方式显示它们。

简而言之,我想做以下事情:

myExpression <- "3 * 5"
myExprParsed <- tryCatch( parse(myExpression), .... )

我的问题很简单:R 是否有一些类似\Q \E正则表达式的结构,从头到尾完全引用文本字符串?myExpression 不太可能包含该"字符,从而引入语法错误。我不想将文本内容写入单独的文本文件并使用source().

=示例=

myExpression <- " XXXXXXX "

其中 XXXXXXpaste("my random value is ", runif(3))相当于

myExpression <- " paste("my random value is ", runif(3)) "

这会产生语法错误。我想要类似的东西

myExpression <- verbatim@   paste("my random value is ", runif(3))   @
4

1 回答 1

2

从用户那里获取一些输入——我猜你只是从 GUI 中的文本框中获取值。我将使用scan

> dowhat = scan(what="")
1: x="hello world"
3: 
Read 2 items

我们引用了字符串:

> dowhat
[1] "x=\"hello" "world\""  

我们可以解析它:

> parse(text=dowhat)
expression(x="hello
world")

并且有一个换行符,因为 scan() 按行拆分内容。不是一个真正的问题,如果你在乎,可以修复。

现在让我们实际运行它:

> eval(parse(text=dowhat))

现在我们应该有一个x

> x
[1] "hello\nworld"
> 

?

于 2012-10-17T09:07:46.957 回答