如何使所有变量的长度相同?

时间:2019-09-24 05:28:46

标签: r

我想使数据适合线性模型,但由于长度不同而无法执行。如何解决这个问题

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,但是对于obspressure来说是18。

1 个答案:

答案 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时,由于回收,元素被复制为具有相同的长度