管道 `%>%` 回归 `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
或使用 2
和 4
代替上述任一项中的 "x"
和 "Pr(>|t|)"
。
我知道可以通过这样做 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
或使用 2
和 4
代替上述任一项中的 "x"
和 "Pr(>|t|)"
。