当变量名作为字符串传递时如何获取值

时间:2012-05-03 10:48:21

标签: r

我在R

中编写此代码
paste("a","b","c") 

返回值"abc"

变量abc的值为5(比方说)如何让"abc"给我值5是否有as.value(paste("a","b","c"))之类的函数会给我答案5?我让我怀疑听起来很简单,这正是我想要的。所以请帮助我。提前致谢

4 个答案:

答案 0 :(得分:31)

paste("a","b","c")"a b c"提供"abc"

无论如何,我认为您正在寻找get()

> abc <- 5
> get("abc")
[1] 5

答案 1 :(得分:7)

Sacha回答的补充。如果要使用paste()

为对象“abc”指定值
assign(paste("a", "b", "c", sep = ""), 5)

答案 2 :(得分:5)

这肯定是关于R语言最常见的问题之一,以及它邪恶的双胞胎兄弟“我如何将x='myfunc'变成可执行函数?” 总而言之,getparseevalexpression都是值得学习的好东西。最有用的(恕我直言)和最不为人所知的是do.call,它负责为你完成很多字符串到对象的转换工作。

答案 3 :(得分:1)

这是一个演示eval()和get(eval())的示例

a <- 1
b <- 2

var_list <- c('a','b')

for(var in var_list)
{
  print(paste(eval(var),' : ', get(eval(var))))
}

这给出了:

[1] "a  :  1"
[1] "b  :  2"