21

我用 R 写这段代码

paste("a","b","c") 

返回值"abc"

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

4

5 回答 5

35

paste("a","b","c")"a b c"不给"abc"

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

> abc <- 5
> get("abc")
[1] 5
于 2012-05-03T11:00:22.043 回答
7

萨沙回答的补充。如果要使用以下方法为对象“abc”赋值paste()

assign(paste("a", "b", "c", sep = ""), 5)
于 2012-05-03T11:16:41.740 回答
6

这当然是关于 R 语言以及它的邪恶孪生兄弟“我如何x='myfunc'变成可执行函数?”的最常被问到的问题之一。总之, get, parse, eval,expression都是值得学习的好东西。最有用(恕我直言)和最不为人知的是do.call,它为您处理了大量的字符串到对象的转换工作。

于 2012-05-03T12:00:45.107 回答
2

这是一个演示 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"
于 2019-12-05T08:33:53.243 回答
0

这是一个针对多个向量执行此操作的 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"
于 2021-12-09T20:00:04.960 回答