Ну, если в строке есть NA, эта строка (по умолчанию) удаляется:
d <- data.frame(x=c(1,1,2), y=c(2,2,4), z=c(4,NA,8))
m <- model.matrix(x ~ ., data=d)
nrow(d) # 3
nrow(m) # 2
Это поведение контролируется опцией "na.action":
options(na.action="na.fail")
m <- model.matrix(x ~ ., data=d) # Error: missing values in object