fill.md1 <-function(x,vars) { # vars : Datenmatrix mit ausschließlich den Variablen, # die zur Berechnung verwendet worden waren # indices: Indices der fehlenden Positionen # x : Ergebnisvektor, bei dem fehlende Werte eliminiert sind # # Aufruf-Beispiel: # res<-fillmd1(lm$residuals, cars[ ,c("mpg","hp","wt")]) # # Berechnung von indices ncases<-dim(vars)[1] nvar<-dim(vars)[2] lmiss<-rep(F,ncases) for (i in 1:nvar) lmiss<-lmiss | is.na(vars[ ,i]) indices<-which(lmiss) # Setzen der Startwerte n<-length(indices) ii<-1 # nächste Position in indices iy<-1 # nächste Position in y ix<-1 # nächste Position in x y<-rep(NA,ncases) # Übernehme x in y zwischen 2 Lückenpositionen while (ii<=n) { ia<-ix ie<-indices[ii]-ii if (ia<=ie) { for (j in ia:ie) { y[iy]<-x[ix] ; ix<-ix+1 ; iy<-iy+1 } } y[iy]<-NA iy<-iy+1 ii<-ii+1 } # Übernehme x in y hinter der letzten Lückenposition if (iy<(length(x)+n)) { ia<-iy ie<-(length(x)+n) for (j in ia:ie) { y[iy]<-x[ix] ; ix<-ix+1 ; iy<-iy+1 } } y }