dplyr внутри функции меняет класс нескольких переменных вне функции - PullRequest
0 голосов
/ 22 февраля 2019

Я полностью сбит с толку.У меня есть функция, которая создает таблицу го квантилей.Моя проблема, если в данных, предоставленных функции, есть столбец с именем "видов", то я хочу сгруппировать по этому столбцу.В противном случае сделать тот же код без группировки.Я получаю предупреждение, что это устарело, но даже странно, что все мои переменные меняются.

Я почти уверен, что это новое поведение, которого раньше не было, так как я использую этофункционировать с 2 лет или около того, не меняя его.

Может кто-нибудь взглянуть?

library(dplyr)

set.seed(1)
df<- data.frame(Intensity=rnorm(1000, 25, 3))
class(df)
#> [1] "data.frame"
df_backup <- df
class(df_backup)
#> [1] "data.frame"
my_plotAbundanceRank <- function(data_set) {
    quantile_df <- 
        data_set %>% 
        dplyr::group_by_at(vars(matches('^species$'))) %>%
        dplyr::summarise(`5%`=stats::quantile(log10(Intensity),.05),
                         `50%`=stats::quantile(log10(Intensity),.50),
                         `95%`=stats::quantile(log10(Intensity),.95)) 
}
print(my_plotAbundanceRank(df))
#> # A tibble: 1 x 3
#>    `5%` `50%` `95%`
#>   <dbl> <dbl> <dbl>
#> 1  1.30  1.40  1.48
class(df)
#> [1] "tbl_df"     "tbl"        "data.frame"
class(df_backup)
#> [1] "tbl_df"     "tbl"        "data.frame"

После выполнения класс меняется с [1] "data.frame" на [1] "tbl_df" "tbl" "data.frame" для всех переменных, даже если они не являютсяпредоставляется функции.

Я использую dplyr_0.8.0.1, что является довольно новым и может вызвать проблему.

Есть идеи?

ОБНОВЛЕНИЕ

Итак, я проверил с dplyr_0.7.8, и код работает как положено, поэтому все переменные остаются data.frame.

devtools::install_version("dplyr", version = "0.7.8", repos = "http://cran.us.r-project.org")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...