как сделать одинаковую длину для всей переменной? - PullRequest
1 голос
/ 24 сентября 2019

Я хочу вписать данные в модель лайнера, но не могу выполнить из-за разной длины.как исправить эту проблему

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 (формула = obs ~ давление * temp, drop.unused.levels= TRUE): переменные длины отличаются (найдено для 'temp')

, потому что длина temp равна 6, но для obs и pressure равно 18.

1 Ответ

0 голосов
/ 24 сентября 2019

Нам нужно указать 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, из-за повторного использования элементы дублируются, чтобы иметь одинаковую длину

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...