R语言plot_ly函数中波浪号(~)作为参数的作用及相关语法疑问
R中plotly语法里波浪号(~)的相关问题解答
1. 波浪号的实际运行逻辑
你查阅的R原生波浪号文档是对的,~本身是R中用来创建公式对象的运算符,你看到的取dataframe列的效果,是plotly包对公式对象做了自定义解析的结果:
- 当你写
~gdpPercap时,本质是生成了一个单侧公式对象,这个对象会存储gdpPercap这个未求值的表达式,不会立刻在当前全局环境找同名变量 - plotly处理参数时,会提取公式里的表达式,放到你传入的数据集的上下文环境中求值,所以就能匹配到数据集里的同名列,拿到对应的值
2. 该用法是否为plotly特有
不是。这种基于公式传递列引用的用法是R生态里非常常见的非标准求值(NSE)设计,ggplot2、dplyr等tidyverse体系的包都支持类似的语法,只是不同包的解析逻辑会根据自身功能做适配。
3. 列名含特殊字符的写法
如果列名包含-、/、空格这类特殊字符,只要用反引号`把列名包裹起来即可,示例代码如下:
# 假设列名为 gdp-percap、life/exp plot_ly( x = ~`gdp-percap`, y = ~`life/exp`, size = ~pop, color = ~continent, frame = ~year, text = ~country, hoverinfo = "text", type = 'scatter', mode = 'markers' )
内容的提问来源于stack exchange,提问作者gregseth
相关产品推荐
相关产品推荐

