按每个数据帧中的行数对数据帧列表重新排序

hed*_*ds1 1 r list dataframe

假设我有三个数据帧my.list,每个数据帧都有不同的行数。我想重新排序此列表,以便列表的第一个元素是行数最多的数据框(在下面的示例中,d2)。

d1 <- data.frame(y1 = c(1, 2, 3),
                 y2 = c(4, 5, 6))
d2 <- data.frame(y1 = c(3, 2, 1, 3, 2),
                 y2 = c(6, 5, 4, 2, 5))
d3 <- data.frame(y1 = c(2, 1),
                 y2 = c(3, 2))

my.list <- list(d1, d2, d3)
Run Code Online (Sandbox Code Playgroud)

预期输出:

str(mylist[[1]]) ## 'data.frame':   5 obs. of  2 variables:
                     $ y1: num  3 2 1 3 2
                     $ y2: num  6 5 4 2 5
Run Code Online (Sandbox Code Playgroud)

原因是:我重复绘制多个数据帧列表中第一个元素的数据,并希望确保在调用 时绘制具有最多数据点的数据帧plot(my.list[[1]])

也许一个更干净的解决方案是在调用中plot搜索行数最多的元素/数据框并绘制它,但我不确定这有多容易。

一个潜在的复杂因素是,偶尔会出现一系列数据帧,其中有多个数据帧共享最多行数。在这种情况下,调用哪一个并不重要——它们都会做得很好——但我不确定这是否会在这里产生问题。

小智 5

假设您的列表名为“lst”

lst= lst[order(sapply(lst,nrow),decreasing = T)]