如何从summary.glm获取响应变量名
考虑以下几点:如何从summary.glm获取响应变量名,r,R,考虑以下几点: set.seed(1) y <- rbinom(10, 1, prob=.5) x <- runif(10) m <- glm(y~x, family=binomial) s <- summary(m) set.seed(1) 也许有更好的答案,但是 as.character(attributes(s$terms)$variables[[2]]) 工作另一个选项- R> strsplit(as.character(s$call)[2],"\\s~
set.seed(1)
y <- rbinom(10, 1, prob=.5)
x <- runif(10)
m <- glm(y~x, family=binomial)
s <- summary(m)
set.seed(1)
也许有更好的答案,但是
as.character(attributes(s$terms)$variables[[2]])
工作另一个选项-
R> strsplit(as.character(s$call)[2],"\\s~\\s")[[1]][1]
[1] "y"
如果使用terms()
函数,您可以
with(attributes(terms(m)), as.character(variables[response+1]))
# [1] "y"
对于许多不同的公式,这应该是稳健的。这与delete.response()
函数使用的方法类似。您可以(手动)解析s$call
(输出glm(公式=y~x,族=二项式)
或模型公式m$formula
(输出y~x
)@nrussell,谢谢。这是一个很好的开始。是否有一个干净的字符串函数来提取“~”之前的值?实际上,您甚至可能不需要在这个-as.character(m$formula)
返回[1]“~”“y”“x”
,一个长度为三的向量-因此在本例中,as.character(m$formula)[2]
应该可以完成这项工作。您可能需要在几个不同的公式上测试这一点,以了解这种方法的健壮性,但我猜~
始终是第一个元素,响应变量始终是第二个,自变量是向量的其余部分。strsplit(as.character(s$call)[2],“\\s~\\s”)[[1][1]
喜欢一个可行的选项。@nrussell,如果你愿意,你可以添加它作为答案,&我会投赞成票。谢谢你的帮助。太好了。非常感谢。@akrun在这种情况下肯定会起作用,但我试着对公式可能是y\u var~x
(关联的调用是glm(formula=y\u var~x)
),它只会返回y
,否?是的。只需将m
更改为s
。我刚刚有机会检查它;-)。谢谢你的建议。