Try this: mapply(function(x, y)x[match(x, y)], m2, m1)
On Fri, May 14, 2010 at 9:23 AM, Andreas Wittmann <andreas_wittm...@gmx.de>wrote: > Dear R-users, > > after trying and searching a long time i have the following question. > is it possible to replace to following double loop by some apply calls? > > ####################################################################### > > m1 <- data.frame(v1=factor(letters[1:5]), > v2=factor(letters[2:6]), > v3=factor(letters[3:7])) > > > m2 <- data.frame(v1=factor(letters[3:7]), > v2=factor(letters[1:5]), > v3=factor(letters[4:8])) > > > ind <- matrix(logical(nrow(m2) * ncol(m2)), > nrow = nrow(m2), byrow = TRUE) > > for (j in 1:ncol(m2)) > { > for (i in 1:nrow(m2)) > { > ind[i, j] <- any(levels(m1[, j]) == m2[i, j]) > } > ind[is.na(ind[, j]), j] <- TRUE > m2[!ind[, j], j] <- NA > } > > ####################################################################### > > > > > thanks and best regards > > Andreas > -- > GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT! > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > -- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.