2011-06-22 30 views
23

Model matrisi, neden veri çerçevesiyle aynı sayıda satıra sahip olmaz?model.matrix, orijinal data.frame'den daha az satır üretir.

mergem = model.matrix(as.formula(paste(response, '~ .')), data=mergef) 
dim(mergef) 
# [1] 115562  71 
dim(mergem) 
# [1] 66786 973 

Dokümanlarda ipuçları aramayı denedim, ancak hiçbir şey bulamadım. Şimdiden teşekkürler.

cevap

26

bir sıra içinde Nas vardır buysa, o satırı olan (varsayılan olarak) kaldırıldı:

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 

Bu davranış seçeneği "na.action" tarafından kontrol edilir: Maalesef

options(na.action="na.fail") 
m <- model.matrix(x ~ ., data=d) # Error: missing values in object 
+1

, benim için çalışmadı. Yerine NA ile değiştirilir. –

+0

na.action = "na.pass" ı kullandım ve daha sonra elde edilen matriste 0 için NAs'ı kullandım. Bu şekilde, bu örnekleri oluşturulan tüm karşıtlıklardaki tüm karşıt değişkenlerden hariç tutar. – Llopis