按这些元素的特征对列表的元素进行排序

时间:2016-06-28 01:49:18

标签: r sorting analytics

假设我有一个表列表。每个表的一列被命名并包含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)。

1 个答案:

答案 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