显式解析脚本中R代码的一部分

显式解析脚本中R代码的一部分,r,parsing,syntax,R,Parsing,Syntax,我的用例如下: myExpression <- "3 * 5" myExprParsed <- tryCatch( parse(myExpression), .... ) 显示GUI以收集一些R表达式 生成一个包含我的模拟框架的源文件,该文件与用户提供的R表达式混合在一起 允许用户生成单个源文件。如果用户指定的任何表达式包含错误(语法或运行时),我希望以用户友好的方式显示这些错误 简而言之,我想做以下几件事: myExpression <- "3 * 5" myExprP

我的用例如下:

myExpression <- "3 * 5"
myExprParsed <- tryCatch( parse(myExpression), .... )
  • 显示GUI以收集一些R表达式
  • 生成一个包含我的模拟框架的源文件,该文件与用户提供的R表达式混合在一起
  • 允许用户生成单个源文件。如果用户指定的任何表达式包含错误(语法或运行时),我希望以用户友好的方式显示这些错误
简而言之,我想做以下几件事:

myExpression <- "3 * 5"
myExprParsed <- tryCatch( parse(myExpression), .... )
其中XXXXXX是
粘贴(“我的随机值是”,runif(3))
相当于

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

myExpression从用户那里获取一些输入-我猜您只是从GUI中的文本框中获取值。我将使用
扫描

> 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"
> 

我不明白你的问题。正则表达式和它有什么关系?为什么让用户输入引号会成为一个问题?它们存储在字符串中,这不是问题。因此我必须从某个地方导入代码:用户输入,或文件,或。。。(似乎我不能像在XML中那样使用[CDATA]输入代码块)
> x
[1] "hello\nworld"
>