我想要做的是为线性模型中是否存在某个变量做出条件
实施例。如果线性模型中有B
model <- lm(Y ~ A + B + C)
我想做点什么。我之前使用了摘要函数来引用R平方。
summary(model)$r.squared
可能我正在寻找类似的东西
if (B %in% summary(model)$xxx)
或
if (B %in% summary(model)[xxx])
但我找不到xxx。请帮忙=)
答案 0 :(得分:4)
试试这个:
if ("B" %in% all.vars(formula(model))) ...
答案 1 :(得分:2)
另一种方式:
if ("B" %in% names(coef(model)))
答案 2 :(得分:2)
另一种方式:
if ("B" %in% variable.names(model)) ...
答案 3 :(得分:1)
一种选择是从拟合模型中获取模型术语并询问term.labels
属性。使用一些虚拟数据:
set.seed(1)
DF <- data.frame(Y = rnorm(100), A = rnorm(100), B = rnorm(100), C = rnorm(100))
model <- lm(Y ~ A + B + C, data = DF)
术语对象包含属性中的标签:
> attr(terms(model), "term.labels")
[1] "A" "B" "C"
因此,检查"B"
是否在该组标签中:
> if("B" %in% attr(terms(model), "term.labels")) {
+ summary(model)$r.squared
+ }
[1] 0.003134009
答案 4 :(得分:0)
(有点不优雅)可能的解决方案是:
length(grep("\\bB\\b",formula(model))) > 0
\\b
匹配单词边界,B
是您要查找的变量名称。