【问题标题】:Tidyverse commands are becoming deprecated: T test inside a summarise , then report all results不推荐使用 Tidyverse 命令:在汇总中进行 T 测试,然后报告所有结果
【发布时间】:2026-01-11 17:25:04
【问题描述】:

我几乎每天都使用 tidyverse(及其环境),并且不时地我不得不回到以前/旧的分析。不幸的是,要跟踪对包所做的更改并不容易。

这个脚本非常实用,它执行我想要的(它在一个函数中与其他命令一起使用)

ds <- data.frame(result = rnorm(100,5,2),
                 time = c("1","2"))
library(tidyverse)
library(broom)

ds %>% 
  summarise_at(vars("result"),
               funs(list(tidy(t.test(. ~ time, paired=TRUE))))) %>% map(1)

我知道这不是最优雅的语法。现在,这条消息出现在命令之后:

funs() 从 dplyr 0.8.0 开始被软性弃用 请使用函数或 lambda 列表:

  # Simple named list: 
  list(mean = mean, median = median)

  # Auto named with `tibble::lst()`: 
  tibble::lst(mean, median)

  # Using lambdas
  list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))

我所有修复它的尝试都给了我一个信息......

> ds %>% 
+   summarise_at(vars("result"),
+                lst(tidy(t.test(. ~ time, paired=TRUE)))) %>% map(1)
Error in model.frame.default(formula = . ~ time) : 
  invalid type (list) for variable '.'
> ds %>% 
+   summarise_at(vars("result"),
+                list(list(tidy(t.test(. ~ time, paired=TRUE))))) %>% map(1)
Error in model.frame.default(formula = . ~ time) : 
  invalid type (list) for variable '.'
> ds %>% 
+   summarise_at(vars("result"),
+                list(list(tidy(~ t.test(. ~ time, paired=TRUE))))) %>% map(1)
Error: No tidy method for objects of class formula

所以.. 第一个问题:有任何关于修复它的线索吗?
第二个:我在哪里可以关注这些(持续的)更新?
:我使用 tidyverse 是因为我喜欢它处理命令的方式。它非常直观,但我认为这是一个重要的副作用,它会不断变化……我是否应该尝试将所有例程移至 R 基础(可能,R 基础不会改变其功能……)?

谢谢大家。

【问题讨论】:

    标签: r dplyr tidyverse broom


    【解决方案1】:

    这个怎么样?

    ds <- data.frame(result = rnorm(100,5,2),
                     time = c("1","2"))
    
    library(tidyverse)
    library(broom)
    
    ds %>% 
      summarise_at(vars("result"),
                   list(~ list(tidy(t.test(. ~ time, paired=TRUE))))) %>% map(1)
    #> $result
    #> # A tibble: 1 x 8
    #>   estimate statistic p.value parameter conf.low conf.high method
    #>      <dbl>     <dbl>   <dbl>     <dbl>    <dbl>     <dbl> <chr> 
    #> 1   -0.719     -1.77  0.0823        49    -1.53    0.0955 Paire~
    #> # ... with 1 more variable: alternative <chr>
    

    reprex package (v0.3.0) 于 2019 年 9 月 4 日创建

    【讨论】: