模型中存在if变量的条件表达式

时间:2010-12-13 13:42:22

标签: r

我想要做的是为线性模型中是否存在某个变量做出条件

实施例。如果线性模型中有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。请帮忙=)

5 个答案:

答案 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是您要查找的变量名称。