2017-11-24 6 views
0

이 질문은 herehere 앞에 질문했지만 내 문제에 도움이되지 않습니다. 내 데이터 집합에 누락 된 데이터가없고 model.frame에서 model.matrix을 만들려고합니다. 다음은 재현 가능한 예입니다.model.frame.default (object, data, xlev = xlev)의 오류 : 가변 길이가 다릅니다 ('z'에서 찾음)

dat = data.frame(x = rep(1:3, each = 5), 
    y = rnorm(15), 
    z = rep(c(1,1.1,1.3), each = 5)) 
# this works 
mt = model.matrix(model.frame(lm(y ~ x,dat))) 
# this produces the error 
mt = model.matrix(model.frame(lm(y ~ x + z,dat))) 

왜, 어떻게 수정해야합니까? 양자 택일로, 절충 컬럼을 사용하여 오른쪽, 오른쪽 값의 매트릭스를 다른 방법으로 얻을 수있는 방법은 무엇입니까?

+1

'mt = model.matrix (model.frame (lm (y - x, dat)))'실행하지 마십시오. – cuttlefish44

+1

@ cuttlefish44가 맞다면, 그 코드 행은 작성한대로 실행되지 않습니다. 이것은 함수가 기대하는 인수를보기 위해'help ("model.matrix")'를 볼 필요가 있기 때문이다. 수식 또는 용어 객체가 첫 번째 인수로 필요합니다. 'model.matrix (y ~ x + z, model.frame (lm (y ~ x + z, dat)))'를 시도해보십시오. – duckmayr

+2

'model.matrix'는 default와 lm 메쏘드를 가지고 있습니다. 처음에는'model.matrix (y ~ x + z, dat)'로 쓰거나'lm' 객체의 함수로 써야한다면'model.matrix (lm (y ~ x + z, dat))' –

답변

1

model.matrix()은 수식 또는 용어 개체가 첫 번째 인수로 필요합니다. 해결책 :

model.matrix(y ~ x + z, model.frame(lm(y ~ x + z, dat)))