2010-10-19 69 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

相关问题