2013-07-15 61 views
0

我正在解析R公式的左側。在我的具體情況下,這可以是一個變量或具有索引的對象(類似myvariable[[3]])。我想訪問此對象的第三個子對象並將其存儲在另一個對象中。以下示例從具有索引對象字符串的位置開始,但我需要引用。將帶索引的字符串轉換爲對象引用

mychars <- c("a", "b", "c") 
mystring <- "mychars[2]" 
get(mystring)    # does not work 
eval(as.name(mystring))  # does not work either 

我可以使用正則表達式的過程解析的數量和使用as.numeric將其轉換爲一個真正的指數。但在某些情況下,可能會有名稱索引,如mystring["second"]。那麼如何提取子對象呢?

+0

你爲什麼要這麼做?更具體地說,在字符類型對象中存儲可執行代碼有什麼好處? –

回答

5

你可以parse然後eval這個表達式。

mychars <- c("a", "b", "c") 
mystring <- "mychars[2]" 
eval(parse(text = mystring)) 
[1] "b" 

它適用於命名指數也

names(mychars) <- c("first", "second", "third") 
eval(parse(text = 'mychars["second"]')) 
second 
    "b" 
+0

很酷,謝謝。我已經擺弄了'eval(parse(object))',但是我沒有包括'text ='部分...... –

+0

@SpammerSlammer沒錯,你很接近:-) – dickoa

+2

'fortunes :: fortune(「解析()「)' –