Редактировать: Исправлено, чтобы не сортировать значения:
apply(m, 2, function(x) x[order(is.na(x))])
Оригинал: Другое решение, которое использует sort(..., na.last = T)
и подходит для сортировки каждого столбца:
m <- structure(c("a", "b", "c", NA, "d", "e", NA, NA, "f"), .Dim = c(3L,
3L), .Dimnames = list(NULL, c("V1", "V2", "V3")))
apply(m, 2, sort, na.last = T )
V1 V2 V3
[1,] "a" "d" "f"
[2,] "b" "e" NA
[3,] "c" NA NA