函数参数中的代字号的解释

问题描述 投票:0回答:1

我试图用plotly强调如何绘制累积线动画。下面是“ Plotly R开源图形库”中的代码:

library(plotly)

accumulate_by <- function(dat, var) {
  var <- lazyeval::f_eval(var, dat)
  lvls <- plotly:::getLevels(var)
  dats <- lapply(seq_along(lvls), function(x) {
    cbind(dat[var %in% lvls[seq(1, x)], ], frame = lvls[[x]])
  })
  dplyr::bind_rows(dats)
}

df <- txhousing 
fig <- df %>%
  filter(year > 2005, city %in% c("Abilene", "Bay Area"))
fig <- fig %>% accumulate_by(~date)
  1. 主要问题是为了解释当我们通过~dateaccumulate_by功能。哪些值datvar变量会得到什么?以及它如何工作?
  2. 如果我了解vardat变量取什么值,就很清楚f_eval函数的作用,但是现在我不明白。
  3. plotly:::getLevels是什么?我的意思是,我没有找到有关此功能的任何文档。
r plotly lazy-evaluation tilde
1个回答
0
投票
  1. 主要问题是解释我们通过〜date后会发生什么情况到accumulate_by函数。哪些值dat和var变量会得到吗?以及它是如何工作的?

    accumulate_by将采用传递给它的datvar的任何值。这意味着如果您通过accumulate_by(Var1, Var2),则与accumulate_by(dat = Var1, var = Var2)相同。这称为位置匹配。

    由于代码被写入,因此fig是您的dat变量,因为它是通过管道(accumulate_by)在第一个位置进入%>%的。 ~date是您的var变量,因为它位于第二位置。

    日期前面的~表示“按”,因此“按日期”

  2. 如果我了解var和dat变量取什么值,清楚f_eval函数的作用,但现在我不知道明白这一点。

    我希望回答问题1。

  3. 什么是密谋::: getLevels?我的意思是,我没有找到任何文档关于此功能。

    三冒号表示“搜索整个程序包(在这种情况下,程序包为plotly),包括程序包名称空间中未导出的项目”。实际上,这意味着很多软件包都具有“帮助程序”功能和其他最终用户通常不使用的实用程序。而是这些辅助功能被包中的其他功能使用。辅助函数不会“导出”,也就是说,通常只需输入其名称即可使用。但是,可以通过使用:::三元冒号来访问它们。

© www.soinside.com 2019 - 2024. All rights reserved.