如果我想使用`suptor_with()`'使用拥抱操作员怎么办?

发布于 2025-01-30 13:47:25 字数 660 浏览 3 评论 0原文

使用拥抱操作员消除了将参数包含在双引号标记中的函数的必要性。

但是,如果我想将其与start_with()一起使用该怎么办?

# This works.
test <- function(var) {
  mtcars |>
    dplyr::select({{ var }})
}
test(mpg) |> head()
#>                    mpg
#> Mazda RX4         21.0
#> Mazda RX4 Wag     21.0
#> Datsun 710        22.8
#> Hornet 4 Drive    21.4
#> Hornet Sportabout 18.7
#> Valiant           18.1

# But this won't work.
test2 <- function(var) {
  mtcars |>
    dplyr::select(starts_with({{ var }}))
}

test2(m) |> head()
#> Error in `dplyr::select()`:
#> !  オブジェクト 'm' がありません 

Using the embracing operator eliminates the need to enclose arguments passed to a function in double quotation marks.

But what if I want to use it with starts_with()?

# This works.
test <- function(var) {
  mtcars |>
    dplyr::select({{ var }})
}
test(mpg) |> head()
#>                    mpg
#> Mazda RX4         21.0
#> Mazda RX4 Wag     21.0
#> Datsun 710        22.8
#> Hornet 4 Drive    21.4
#> Hornet Sportabout 18.7
#> Valiant           18.1

# But this won't work.
test2 <- function(var) {
  mtcars |>
    dplyr::select(starts_with({{ var }}))
}

test2(m) |> head()
#> Error in `dplyr::select()`:
#> !  オブジェクト 'm' がありません 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笑忘罢 2025-02-06 13:47:25

尝试以下代码:

library(dplyr)

test2 <- function(var) {
  x <- deparse(substitute(var))
  mtcars |> select(starts_with(x))
}
test2(m) |> head()

输出:

                   mpg
Mazda RX4         21.0
Mazda RX4 Wag     21.0
Datsun 710        22.8
Hornet 4 Drive    21.4
Hornet Sportabout 18.7
Valiant           18.1

Try the following code:

library(dplyr)

test2 <- function(var) {
  x <- deparse(substitute(var))
  mtcars |> select(starts_with(x))
}
test2(m) |> head()

Output:

                   mpg
Mazda RX4         21.0
Mazda RX4 Wag     21.0
Datsun 710        22.8
Hornet 4 Drive    21.4
Hornet Sportabout 18.7
Valiant           18.1
回忆凄美了谁 2025-02-06 13:47:25

即使选择采用未引用的字符串,因此可以与test(M)一起使用,但对于starts_with,IE并非如此

test2('m')
                     mpg
Mazda RX4           21.0
Mazda RX4 Wag       21.0
Datsun 710          22.8

Even though select takes unquoted strings and hence works with test(m), this is not the case for starts_with, i.e.

test2('m')
                     mpg
Mazda RX4           21.0
Mazda RX4 Wag       21.0
Datsun 710          22.8
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文