管道 `%>%` 回归 `lm` 和 return 属性之一的结果

Pipe `%>%` the results of a regression `lm`and return one of the attributes

我知道可以通过这样做 return 回归 p-value lm:

# regression model
  fit <- lm(y ~ x)

# two alternative ways to return the p-value
  glance(fit)$p.value 
  summary(fit)$coefficients[,4][2]

但是,出于我想要执行的目的,我需要通过管道传输结果。这是我尝试过但没有成功的方法:

lm(y ~ x) %>% glance(.)$p.value 

lm(y ~ x) %>% summary(.)$coefficients[,4][2]

可重现的例子

library(magrittr)
library(broom)

x <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
y <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)

建议here避免使用 $ 运算符提取系数。要更明确地说明您要查找的内容,并更稳健地应对库更改,请尝试以下操作:

coef(summary(fit))["x","Pr(>|t|)"]

但这会让你的管道变硬。你可以试试这个,如果它适合你的目的:

getp <- function(coefs) { return (coefs["x","Pr(>|t|)"]) }
lm(y ~ x) %>% summary %>% coef %>% getp

这对我有用,您甚至可以在单行函数中为要提取的列添加参数。

试试这个:

library(magrittr)

{ y ~ x } %>% lm %>% summary %>% coef %>% .["x", "Pr(>|t|)"]
## [1] 0.18351

{ y ~ x } %>% lm %>% summary %>% coef %>% `[`("x", "Pr(>|t|)")
## [1] 0.18351

或使用 24 代替上述任一项中的 "x""Pr(>|t|)"