在 aes() 调用中获取字符串变量的未加引号的值

Get the unquoted value of a string variable inside of aes() call

我想根据

使用aes()ggplotly()生成悬停文本
mapping <- aes(text = paste0(
    "Value: ",
    columnName
))

其中 columnName 是一个包含列名称作为字符串的变量。现在,我不希望 columnName 本身被识别为列名。如果columnName == "col1"我想要的结果是

aes(text = paste0(
   "Value: ",
    col1
))

对美学映射进行评估`text` -> `paste0("Value: ", col1)`

我试过使用 aes_string(),但是

columnName <- "col1"
aes_string(text = paste0(
    "Value: ",
    columnName
))

只是对美学映射的评价`x` -> `Value:col1`

如何进行这项工作?

显然 OP 想要创建一个表达式对象以便稍后对其进行求值。这可以使用 bquote (或 substitute 或 tidyverse 中可能涉及感叹号的某些函数)来实现:

columnName <- "col1"
columnName <- as.name(columnName) #first turn the character string into a quoted name
mapping <- bquote(aes(text = paste0(
  "Value: ",
  .(columnName) #this substitutes the name into the expression
))
)
#aes(text = paste0("Value: ", col1))