我用 R 写这段代码
paste("a","b","c")
返回值"abc"
变量abc
的值为 5(比如说)我如何"abc"
给我值 5 是否有任何函数as.value(paste("a","b","c"))
可以给我答案 5?我让我的怀疑听起来很简单,这正是我想要的。所以请帮助我。提前致谢
我用 R 写这段代码
paste("a","b","c")
返回值"abc"
变量abc
的值为 5(比如说)我如何"abc"
给我值 5 是否有任何函数as.value(paste("a","b","c"))
可以给我答案 5?我让我的怀疑听起来很简单,这正是我想要的。所以请帮助我。提前致谢
paste("a","b","c")
"a b c"
不给"abc"
无论如何,我认为您正在寻找get()
:
> abc <- 5
> get("abc")
[1] 5
萨沙回答的补充。如果要使用以下方法为对象“abc”赋值paste()
:
assign(paste("a", "b", "c", sep = ""), 5)
这当然是关于 R 语言以及它的邪恶孪生兄弟“我如何x='myfunc'
变成可执行函数?”的最常被问到的问题之一。总之, get
, parse
, eval
,expression
都是值得学习的好东西。最有用(恕我直言)和最不为人知的是do.call
,它为您处理了大量的字符串到对象的转换工作。
这是一个演示 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"
这是一个针对多个向量执行此操作的 purrr 示例
text1 = "Somewhere over the rainbow"
text2 = "All I want for Christmas is you"
text3 = "All too well"
text4 = "Save your tears"
text5 = "Meet me at our spot"
songs = (map(paste0("text", 1:5), get) %>% unlist)
songs
这给
[1] "Somewhere over the rainbow"
[2] "All I want for Christmas is you"
[3] "All too well"
[4] "Save your tears"
[5] "Meet me at our spot"