r语言 - 波浪运算符作为函数参数



我看到了这个plot的例子,我想知道波浪(~)是如何工作的:

plot_ly(
x = ~gdpPercap, 
y = ~lifeExp, 
size = ~pop, 
color = ~continent, 
frame = ~year, 
text = ~country, 
hoverinfo = "text",
type = 'scatter',
mode = 'markers'
)

我的意思是我得到了它的作用(选择数据框中同名的列),但是这个操作符实际上是做什么的?波浪后面的标识符的性质是什么(它不是变量,不是字面量,…)?是特定于情节的吗?
我看到了R中关于波浪运算符的文档,但它似乎与此特定用途无关。
最后,如果数据框中列的名称包含'-'或'/'等字符,那么语法是什么?

正如@r2evans在评论中所说,它用于创建公式。这是一种快速完成两件事的方法:记录一点R语言而不评估它,并将创建它的环境与结果关联起来。

事物之间的区别在于使用它的函数如何使用公式对象。例如,以R为基底的lm()函数表示,波浪左边的表达式被视为响应,右边的表达式编码解释变量。

plot_ly使用它的原因是它使用的名称(gdpPercap等)不需要是当前全局环境中可见的变量,它们可以是从data参数中获取的列。该参数首先出现,因此对于管道,您可以输入诸如

之类的内容
df <- data.frame(a=1:10)
b <- rnorm(10)
df %>% plot_ly(x = ~a, y = ~b)   # incomplete example...

,它可以在全局环境中查找dfb中的a

关于你的最后一个问题,你可以将非语法名称放在反引号中,例如

`a/b` <- 3
`a/b`
# [1] 3

最新更新