2012-10-17 30 views
1

我的用例是如下:明確解析的R代碼裏面部分在腳本

  • 顯示GUI收集一些ř表達式
  • 生成含有我的模擬框架,提供將R表達式混合單個源文件由用戶
  • 允許用戶生成單個源文件。如果用戶指定的任何表達式包含錯誤(語法或運行時),我希望以用戶友好的方式顯示這些表達式。

總之,我想要做的事如下:

我的問題很簡單:沒有R 3具有一些構造像\Q \E在正則表達式,完全引用從開始的文本字符串結束? myExpression不是不可能包含"字符,從而引入語法錯誤。我不想將文本內容寫入單獨的文本文件並使用source()

=實施例=

myExpression <- " XXXXXXX " 

其中XXXXXX是paste("my random value is ", runif(3))將達

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

這將使一個語法錯誤。我想是這樣

myExpression <- [email protected] paste("my random value is ", runif(3)) @ 
+1

不理解你的問題。有什麼正則表達式與它有關呢?爲什麼用戶需要引用輸入引起問題?它們被存儲在字符串中,這不是問題。 – Spacedman

回答

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

而且還有一個換行符,因爲掃描()由行分離的東西。不是一個真正的問題,如果你關心,可以修復。

現在讓我們實際運行它:

> eval(parse(text=dowhat)) 

現在,我們應該有一個x

> x 
[1] "hello\nworld" 
> 

+0

因此,我將不得不從某處導入代碼:用戶輸入或文件,或...(似乎我不能像在CD中那樣在例如XML中輸入代碼塊) – parasietje