Combining the various approaches on the list, here's a simple one-liner that puts the NAs at the end:
t(apply(mat,1,function(r) { dr<-duplicated(r); c( r[!dr], rep(NA,sum(dr)) ) )) If you don't care where the NAs are, the following is a tad shorter and perhaps clearer: mat[ t(apply(mat,1,duplicated)) ] < -NA # modifies mat -s ______________________________________________ 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.