在 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))
我想根据
使用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))