2010-10-19 60 views
35

類似的問題都提出了其他語言:Csqljava等,但我想這樣做在R.訪問變量值,其中變量的名稱存儲在一個字符串中的R

我有

ret_series <- c(1, 2, 3); 
x <- "ret_series"; 

如何獲得(1, 2, 3)通過調用x一些功能/操作,而不直接ret_series提?

+0

另請參閱:http://stackoverflow.com/questions/2948367/pass-variable-name-to-a-function-in-r – 2010-10-19 22:28:35

+0

FWIW,每個語句末尾的分號不是必需的。 – 2010-10-20 07:26:26

回答

49

你在你的問題中提供了答案。嘗試get

> get(x) 
[1] 1 2 3 
13

對於一次性使用,get函數的工作原理(如前所述),但它不能很好地適應大型項目。最好將數據存儲在列表或環境中,然後使用[[以訪問各個元素:

mydata <- list(ret_series=c(1,2,3)) 
x <- 'ret_series' 

mydata[[x]] 
3

以下兩種情況有什麼問題?

eval(as.name(x)) 

eval(as.symbol(x)) 
+0

從控制檯粘貼代碼時要小心。 StackOverflow將「>」解釋爲引用。使用0101010符號來格式化代碼。並歡迎SO;) – Marek 2010-10-21 14:06:38

1

請注意,上面的一些示例不適用於data.frame

例如,給定

x <- data.frame(a=seq(1,5))

get("x$a")不會給你x$a

+2

'get(「x」)$ a'會起作用。 – 2013-11-20 17:29:14

相關問題