2014-01-21 13 views
0

我想知道在R中如何使用表達式對象(EXPRSXP)?在我看來,R幾乎總是使用調用對象來執行語言計算。任何人都可以指向我使用表達式對象而不是調用對象的地方?在R中如何使用表達式對象(EXPRSXP)?

對於承諾中的三點,另一個問題是第三個指針指向一個調用對象(LANGSXP)還是一個表達式對象(EXPRSXP)?

謝謝, 沉

回答

1

parse返回值是一個表達式,所以這將是一個常見用法表達式(我使用的表達式在這種類型的上下文的公平位)。

str(parse(text="1 + 1\n2+2")) 
# length 2 expression(1 + 1, 2 + 2) 

承諾被記錄爲containing expressions,但在大多數情況下,想必他們會是1個長度表達式,因此有效的呼叫/符號,但作爲表達(我猜測這裏)可能仍保存。

+0

謝謝!只是一個快速跟進問題:我想知道什麼是「解析」的一些用途。我認爲R所做的是首先引用一個調用對象,然後遞歸地評估對象?解析結果有哪些用法? – Shen

+0

@Shen解析是將文本轉換爲一系列調用的過程。解析的主要目的是將包含R代碼的文件轉換爲R可以評估的一系列調用。因此,'source'命令的工作流程基本上是R File - > parse - > quoted calls - > eval - >評估調用的結果。注意'parse(text =「1 + 1」)[[1]]'==='quote(1 + 1)' – BrodieG

+0

非常有幫助!謝謝!! – Shen

相關問題