在嵌套函数中使用相同的参数名称会导致意外输出

乔凡尼·科利蒂

为什么前三个函数(f2,f3,f4)仅在id = 1时返回y中的行,而f5返回y的所有行?

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

y <- tibble(id = c(1, 2))


f1 <- function(y, id) {
  y %>% filter(.data$id == {{id}})
}


f2 <- function(id) {
  f1(y, !!id)
}

f3 <- function(id) {
  f1(y, {{id}})
}

f4 <- function(x) {
  f1(y, x)
}

f5 <- function(id) {
  f1(y, id)
}


f2(1)
#> # A tibble: 1 x 1
#>      id
#>   <dbl>
#> 1     1
f3(1)
#> # A tibble: 1 x 1
#>      id
#>   <dbl>
#> 1     1
f4(1)
#> # A tibble: 1 x 1
#>      id
#>   <dbl>
#> 1     1
f5(1)
#> # A tibble: 2 x 1
#>      id
#>   <dbl>
#> 1     1
#> 2     2

reprex软件包(v0.3.0)创建于2020-11-15

弗里克先生

如果您更改功能以显示其正在蒸发的内容,则可能更有意义

f1 <- function(y, id) {
  print(rlang::quo_squash(quo(y %>% filter(.data$id == {{id}}))))
  y %>% filter(.data$id == {{id}})
}

有了f5,您得到

y %>% filter(.data$id == id)

因此,它将返回该列id等于该列id(即每一行)的所有行。

{{}}从data.frame中选择列时,应使用尝试指定文字data.value时没有用。

如果您将以下示例定义f1

f1 <- function(y, id) {
  y %>% filter(.data$id == .env$id)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 <form> 内嵌套 <button> 会导致意外行为

来自分类Dev

循环运行curl会导致意外输出

来自分类Dev

在if语句中使用时,可选链接会导致意外结果

来自分类Dev

像这样在sum()中使用sql变量--sum(@wokao)会导致意外结果

来自分类Dev

在Swift中使用函数参数名称

来自分类Dev

使用不同方法的置换函数的运行速度会导致意外结果

来自分类Dev

在void函数和主程序中使用相同的参数名称

来自分类Dev

使用'char'变量时,while()循环导致意外输出

来自分类Dev

for循环会导致意外结果

来自分类Dev

在Python3中将原始字节写入文件会导致意外输出

来自分类Dev

$ * zsh函数的变量导致意外结果

来自分类Dev

在同一函数内使用函数名称会导致无限循环吗?

来自分类Dev

可变构造函数参数上的private [this]导致意外行为

来自分类Dev

使用Php从MYSQL数据库中提取注释会导致意外的JSON结果

来自分类Dev

使用groupby后在Pandas中计算np.diff会导致意外结果

来自分类Dev

使用Php从MYSQL数据库中提取注释会导致意外的JSON结果

来自分类Dev

使用 CTAS 创建 Azure SQL 数据仓库临时表会导致意外的行顺序

来自分类Dev

在ES6中使用相同的参数名称作为其默认参数

来自分类Dev

为另一个函数内定义的函数使用相同的参数名称

来自分类Dev

在C ++中使用所有默认参数调用函数时使用参数名称

来自分类Dev

在C ++中使用所有默认参数调用函数时,请使用参数名称

来自分类Dev

为环境分配属性会导致意外吗?

来自分类Dev

减去1ms会导致意外行为

来自分类Dev

将promise与promise链接会导致意外的执行顺序

来自分类Dev

反转负整数会导致意外结果

来自分类Dev

预期的空指针会导致意外的InvocationTargetException

来自分类Dev

模型中的继承会导致意外的后果

来自分类Dev

子集数据帧会导致意外行为

来自分类Dev

SwiftUI嵌套ForEach导致意外排序

Related 相关文章

  1. 1

    在 <form> 内嵌套 <button> 会导致意外行为

  2. 2

    循环运行curl会导致意外输出

  3. 3

    在if语句中使用时,可选链接会导致意外结果

  4. 4

    像这样在sum()中使用sql变量--sum(@wokao)会导致意外结果

  5. 5

    在Swift中使用函数参数名称

  6. 6

    使用不同方法的置换函数的运行速度会导致意外结果

  7. 7

    在void函数和主程序中使用相同的参数名称

  8. 8

    使用'char'变量时,while()循环导致意外输出

  9. 9

    for循环会导致意外结果

  10. 10

    在Python3中将原始字节写入文件会导致意外输出

  11. 11

    $ * zsh函数的变量导致意外结果

  12. 12

    在同一函数内使用函数名称会导致无限循环吗?

  13. 13

    可变构造函数参数上的private [this]导致意外行为

  14. 14

    使用Php从MYSQL数据库中提取注释会导致意外的JSON结果

  15. 15

    使用groupby后在Pandas中计算np.diff会导致意外结果

  16. 16

    使用Php从MYSQL数据库中提取注释会导致意外的JSON结果

  17. 17

    使用 CTAS 创建 Azure SQL 数据仓库临时表会导致意外的行顺序

  18. 18

    在ES6中使用相同的参数名称作为其默认参数

  19. 19

    为另一个函数内定义的函数使用相同的参数名称

  20. 20

    在C ++中使用所有默认参数调用函数时使用参数名称

  21. 21

    在C ++中使用所有默认参数调用函数时,请使用参数名称

  22. 22

    为环境分配属性会导致意外吗?

  23. 23

    减去1ms会导致意外行为

  24. 24

    将promise与promise链接会导致意外的执行顺序

  25. 25

    反转负整数会导致意外结果

  26. 26

    预期的空指针会导致意外的InvocationTargetException

  27. 27

    模型中的继承会导致意外的后果

  28. 28

    子集数据帧会导致意外行为

  29. 29

    SwiftUI嵌套ForEach导致意外排序

热门标签

归档