【问题标题】:colons equals operator in R? new syntax?R中的冒号等于运算符?新语法?
【发布时间】:2015-11-11 16:32:51
【问题描述】:

在阅读 http://ggvis.rstudio.com/interactivity.html 时,我注意到代码中有 := 洒在其中。我认为这是一种为函数提供参数的新方法?究竟是什么?

mtcars %>%
  ggvis(~wt, ~mpg, size := input_slider(10, 1000)) %>%
  layer_points(fill := "red") %>%
  layer_points(stroke := "black", fill := NA)

【问题讨论】:

    标签: r colon-equals


    【解决方案1】:

    在这种情况下,:= 只是 ggvis 用于分配固定值的语法;相反,= 将在这里用于分配变量值。正如您在代码示例中可能已经注意到的那样,在右侧,只有“red”或 NA 这样的值,因此 := 是在此上下文中使用的正确运算符。例如,如果您希望“size”依赖于“mpg”列,则可以使用通常的等号编写size = mpg

    我承认我对:=不够熟悉,不能说是否还有其他包也采用了这个运算符。

    来自http://ggvis.rstudio.com/properties-scales.html(更多示例和信息请参阅):

    "props() 函数使用 = 运算符进行映射(缩放),并且 := 设置运算符(未缩放)。它还使用 ~ 运算符 表示应在数据中评估表达式(以及在 ggvis,数据可以改变);没有 ~ 运算符,表达式为 在当前环境中立即评估。通常来说,一般来说, 你会想用 ~ 表示数据中的变量,而不是用它 常数值。”

    【讨论】:

    • Package data.table 使用:= 语法在j 语句中分配值。在data.table 上下文中,这是为了避免创建整个对象的副本(就像<-= 那样),这对于大型对象来说可能非常慢。
    • 我认为引入的运算符必须被 %% 包围
    • 是否可以创建自己的 := 运算符?
    • @Chris:是的,您只使用`:=` = function(x,y){...},而... 可能使用Non-Standard Evaluation tricks,例如substitute() 和朋友。 (迟到总比从不好)
    猜你喜欢
    • 2018-01-02
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    相关资源
    最近更新 更多