假设我有一个表列表。每个表的一列被命名并包含NA值的计数。例如,以下示例中的对象“e”在其最后一列中显示频率为2:
a <- seq(1:5)
b <- c(NA,1,2,4,NA)
c <- a %>% data.frame(.,b)
d <- table(c[1], useNA = "always")
e <- table(c[2], useNA = "always")
f <- list(d, e)
有没有办法根据列表中每个表中找到的NA列中的NA数量来排序列表中的元素?例如,在上面的列表f中,元素[1]中的NA列(即表d)表示0个NA,元素[2]中的NA列(即表e)表示2个NA。由于2> 0我希望将列表中的元素从大多数NAs排序到最少的NA,列表将重新排序到列表(e,d)。
答案 0 :(得分:2)
根据描述,我们可以循环遍历list
('f')的元素,将NA作为名称的元素子集,order
逐渐减少,并使用该索引重新排序' F”。
f1 <- f[order(-sapply(f, function(x) x[is.na(names(x))]))]
identical(f1, list(e,d))
#[1] TRUE