summary.glm 功能的 MagrittR T 型管道。简单问题

MagrittR T-pipe for the summary.glm function. Simple issue

我实际上 运行 遇到了 T 管的问题。我正在尝试在同一条链中做 3 件事:

  1. 适合我的 GLM
  2. 保存在变量中
  3. 打印它的摘要

所以我正在尝试以下语法:

my_variable <- data %>%
    glm(Responce ~ Variables, family) %T>%
    summary

没有按预期工作。 glm 已安装,但摘要不会自行显示。所以我不得不把它分成两条链:

my_variable <- data %>%
    glm(Responce ~ Variables, family)

my_variable %>% summary

所以我在想:要么我没有得到 T 型管道的功能,要么它没有正确编码并且混淆了汇总功能。

因为如果我尝试:

my_variable <- data %>%
    glm(Responce ~ Variables, family) %T>%
    plot

效果很好。

一些想法?

我不明白,为什么您需要在此处 %T>%。如果你想强制打印,只需使用常规管道并添加 print() 到你的管道。但是请记住,使用这种方法,您将摘要存储在 my_variable 中,而不是模型本身。

library(magrittr)

my_variable <- my_data %>%
  glm(counts ~ outcome + treatment, family = poisson(), data = .) %>%
  summary() %>% 
  print()
#> 
#> Call:
#> glm(formula = counts ~ outcome + treatment, family = poisson(), 
#>     data = .)
#> 
#> Deviance Residuals: 
#>        1         2         3         4         5         6         7  
#> -0.67125   0.96272  -0.16965  -0.21999  -0.95552   1.04939   0.84715  
#>        8         9  
#> -0.09167  -0.96656  
#> 
#> Coefficients:
#>               Estimate Std. Error z value Pr(>|z|)    
#> (Intercept)  3.045e+00  1.709e-01  17.815   <2e-16 ***
#> outcome2    -4.543e-01  2.022e-01  -2.247   0.0246 *  
#> outcome3    -2.930e-01  1.927e-01  -1.520   0.1285    
#> treatment2   1.338e-15  2.000e-01   0.000   1.0000    
#> treatment3   1.421e-15  2.000e-01   0.000   1.0000    
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> (Dispersion parameter for poisson family taken to be 1)
#> 
#>     Null deviance: 10.5814  on 8  degrees of freedom
#> Residual deviance:  5.1291  on 4  degrees of freedom
#> AIC: 56.761
#> 
#> Number of Fisher Scoring iterations: 4

数据

counts <- c(18,17,15,20,10,20,25,13,12)
outcome <- gl(3,1,9)
treatment <- gl(3,3)
my_data <- data.frame(treatment, outcome, counts)

当您在控制台中键入 summary(something) 时,print 将被隐式调用。在您的管道调用中并非如此,因此您需要显式调用 print.

因为 %T>% 的取消分支仅适用于一次操作,所以您必须编写 printsummary :

my_variable <- data %>%
    glm(Responce ~ Variables, family) %T>%
    {print(summary(.)}

您需要花括号和点,否则 glm 输出将作为第一个参数传递给 print