我想使数据适合线性模型,但由于长度不同而无法执行。如何解决这个问题
temp<-as.factor(c(rep(150,2),rep(160,2),rep(170,2)))
pressure<-as.factor(c(rep(200,6),rep(215,6),rep(230,6)))
obs<-c(90.4,90.2,90.1,90.3,90.5,90.7,90.7,90.6,90.5,90.6,90.8,90.9,90.2,90.4,89.9,90.1,90.4,90.1)
t1<-data.frame(temp,pressure,obs)
result<-lm(obs~pressure*temp)
R中出现此错误:
model.frame.default(formula = obs〜pressure * temp,drop.unused.levels = TRUE)中的错误:可变长度不同(为'temp'找到)
因为temp的长度是6,但是对于obs
和pressure
来说是18。
答案 0 :(得分:0)
我们需要指定data
lm(obs~pressure*temp, t1)
#Call:
#lm(formula = obs ~ pressure * temp, data = t1)
#Coefficients:
# (Intercept) pressure215 pressure230 temp160 temp170 pressure215:temp160 pressure230:temp160 pressure215:temp170
# 9.030e+01 3.500e-01 -7.479e-14 -1.000e-01 3.000e-01 8.194e-14 -2.000e-01 -1.000e-01
#pressure230:temp170
# -3.500e-01
否则,它将检查在全局环境中创建的具有较少元素数量的变量。当我们创建data.frame
时,由于回收,元素被复制为具有相同的长度