我看到了这个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...
,它可以在全局环境中查找df
和b
中的a
。
关于你的最后一个问题,你可以将非语法名称放在反引号中,例如
`a/b` <- 3
`a/b`
# [1] 3