我完全糊涂了.我有一个功能,正在创建一个表去分位数.我的问题是,如果在提供给函数的数据中有一个名为"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"
Run Code Online (Sandbox Code Playgroud)
执行后,类正在从[1] "data.frame"更改[1] "tbl_df" "tbl" "data.frame"为所有变量,即使它们未提供给函数.
我正在使用dplyr_0.8.0.1这是非常新的,可能会导致问题.
有任何想法吗?
UPDATE
所以我测试了dplyr_0.7.8并且代码按预期工作,因此所有变量都保持不变data.frame.
devtools::install_version("dplyr", version = "0.7.8", repos = "http://cran.us.r-project.org")
Run Code Online (Sandbox Code Playgroud)