Ich laufe immer weiter und frage mich, ob es eine einfache Work-Around ist. Für einige Situationen finde ich es logischer inSubsetting ein data.frame mit einer Ganzzahl-Matrix
eine Matrix über subsettingN <- 12
N.NA <- 6
dat <- data.frame(V1=runif(N),V2=runif(N))
sel.mat <- matrix(c(sample(seq(N),N.NA),sample(ncol(dat),N.NA,replace=TRUE)),ncol=2)
Dies funktioniert für die Auswahl zu denken, aber nicht für den Ersatz:
> dat[sel.mat]
[1] 0.2582569 0.8455966 0.8828083 0.5384263 0.9574810 0.5623158
> dat[sel.mat] <- NA
Error in `[<-.data.frame`(`*tmp*`, sel.mat, value = NA) :
only logical matrix subscripts are allowed in replacement
Mir ist klar, dass ein Grund für die Fehlermeldung gibt es (es würde nicht wissen, was zu tun wäre, wenn mehrere Ersetzungen auf dasselbe Element zeigen würden), aber das hindert R nicht daran, einen ganzzahligen Ersatz für Vektoren zuzulassen (z. B. dat$V1[c(2,3)] <- NA
).
Gibt es eine bequeme Möglichkeit, Ersatz durch Integer-Matrix zu ermöglichen?
In der aktuellen R-devel Snapshot, 'dat [sel.mat] <- NA' ** ** wird unterstützt. Die Matrix-Indizierung mit Ersetzung ist somit ab R-3.0.0 verfügbar. (Siehe meine Antwort unten für weitere Details.) –