Try this:

mapply(function(x, y)x[match(x, y)], m2, m1)

On Fri, May 14, 2010 at 9:23 AM, Andreas Wittmann
<andreas_wittmann@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]]

