如何颠倒列表中data.frame对象的顺序,让它们具有相同的模式?

时间:2016-07-28 11:13:42

标签: r dataframe reverse nested-lists

我有三个列表,其中包含data.frame对象但确定顺序非常不同。我想让它们具有相同的顺序,如list1,list2或list 3.如何反转data.frame对象在不同列表中的顺序具有相同的模式/顺序?有没有人给我一些可能的想法来轻松做这种操作?非常感谢。

在列表中有变量,我们可以使用空气质量,虹膜,汽车,二氧化碳等公共数据在R中快速运行;

数据

list1 <- list(pass=list(Alpha.df1_yes, Beta.df1_yes, Gamma.df1_yes, Theta.df1_yes),
              fail=list(Alpha.df1_no, Beta.df1_no, Gamma.df1_no, Theta.df1_no))

list2 <- list(pass=list(Beta.df2_yes, Alpha.df2_yes, Gamma.df2_yes, Theta.df2_yes),
              fail=list(Beta.df2_no, Alpha.df2_no, Gamma.df2_no, Theta.df2_no))

list3 <- list(pass=list(Gamma.df3_yes, Alpha.df3_yes, Beta.df3_yes, Theta.df3_yes),
              fail=list(Gamma.df3_no, Alpha.df3_no, Beta.df3_no, Theta.df3_no))

list4 <- list(pass=list( Theta.df4_yes, Alpha.df4_yes, Beta.df4_yes,Gamma.df4_yes),
              fail=list(Theta.df4_no, Alpha.df4_no, Beta.df4_no,Gamma.df4_no ))

所需的输出(让我们与list1具有相同的模式):

list1 <- list(pass=list(Alpha.df1_yes, Beta.df1_yes, Gamma.df1_yes, Theta.df1_yes),
              fail=list(Alpha.df1_no, Beta.df1_no, Gamma.df1_no, Theta.df1_no))

list2_NeW <- list(pass=list(Alpha.df2_yes, Beta.df2_yes, Gamma.df2_yes, Theta.df2_yes),
                  fail=list(Alpha.df2_no, Beta.df2_no, Gamma.df2_no, Theta.df2_no))

list3_New <- list(pass=list(Alpha.df3_yes, Beta.df3_yes,Gamma.df3_yes, Theta.df3_yes),
              fail=list(Alpha.df3_no, Beta.df3_no, Gamma.df3_no, Theta.df3_no))

list4_New <- list(pass=list(Alpha.df4_yes, Beta.df4_yes,Gamma.df4_yes, Theta.df4_yes),
              fail=list(Alpha.df4_no, Beta.df4_no, Gamma.df4_no, Theta.df4_no))

因为数据是嵌套结构,所以让它们在新构造的列表中具有相同的模式有点棘手。谁能提出可能的想法?

1 个答案:

答案 0 :(得分:1)

我假设嵌套是常量并创建一些帮助函数以保持可读性:

=begin
  foo
  bar
=end

使它更通用:

  =begin
    foo
    bar
  =end

如果您愿意,可以将其应用于所有列表项(特别是如果您有更多列表项):

exchangeDF <- function(List, newOrder){
    return(List[newOrder])
}
newOrder <- c(2,1,3,4)
list2_NeW <- list(pass = exchangeDF(list2$pass, newOrder),
                  fail = exchangeDF(list2$fail, newOrder))
#....

请注意,此解决方案非常适用于包含data.frames的嵌套列表。