函数内的dplyr正在更改函数外的多个变量的类

时间:2019-02-22 07:45:51

标签: r dplyr

我完全感到困惑。我有一个正在创建表分位数的功能。我的问题是,如果提供给函数的数据中有一个名为“ species”的列,那么我想按此列进行分组。否则,请对相同的代码进行分组。我得到警告,它已被弃用,尽管如此,但我所有的变量都在变化,这很奇怪。

我很确定这是一个新行为,并且因为我在使用此功能已有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")

0 个答案:

没有答案