显式解析脚本中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"
>