выбор определенных столбцов с помощью tidyselect в dplyr::filter_at

Это работает, как ожидалось, за исключением того факта, что столбец meaningfulтакже выбран. Я просто хочу, чтобы были выбраны следующие столбцы:

mean...summary, mean.conf.low...summary, mean.conf.high...summary

Как я могу это сделать?

library(tidyverse)

# dataframe
df <- structure(
  list(
    group = structure(1:2, .Label = c("a", "b"), class = "factor"),
    meaningful = c(0.98, 1.39333333333333),
    mean...summary = c(0.98,
                       1.39333333333333),
    n...summary = c(3L, 3L),
    mean.conf.low...summary = c(0.717103575690863,
                                0.921129311562406),
    mean.conf.high...summary = c(1.24289642430914,
                                 1.86553735510426)
  ),
  class = c("tbl_df", "tbl", "data.frame"),
  row.names = c(NA, -2L)
)

# changing few columns
df %>%
  dplyr::mutate_at(
    .tbl = .,
    .vars = dplyr::vars(dplyr::matches("^mean...|^mean.conf")),
    .funs = ~ format(round(x = ., digits = 3), nsmall = 3)
  )
#> # A tibble: 2 x 6
#>   group meaningful mean...summary n...summary mean.conf.low...~ mean.conf.high.~
#>   <fct> <chr>      <chr>                <int> <chr>             <chr>           
#> 1 a     0.980      0.980                    3 0.717             1.243           
#> 2 b     1.393      1.393                    3 0.921             1.866

Создано 22.11.2019 пакетом REPEX (v0.3.0)

1 ответ

Решение

. имеет особое значение в регулярных выражениях, поэтому вы можете пропустить его и рассматривать как буквальный . используя \\, например matches("^mean\\.\\.\\.|^mean\\.conf") или matches("^mean\\.{3}|^mean\\.conf")

Другие вопросы по тегам