List 如何对列表中的变量排序?

List 如何对列表中的变量排序?,list,r,List,R,我有一个data.frames列表 A <- list(aa = data.frame(var1 = c(1:3), varb = c(1:3), abu = c(1:3)), bb = data.frame(abu = c(1:3), var1 = c(1:3), vara = c(1:3), varb = c(1:3)), cc = data.frame(varb = c(1:3), g = c(1:3))) 如何对这些data.fram

我有一个data.frames列表

A <- list(aa = data.frame(var1 = c(1:3), varb = c(1:3), abu = c(1:3)), 
          bb = data.frame(abu = c(1:3), var1 = c(1:3), vara = c(1:3), varb = c(1:3)), 
          cc = data.frame(varb = c(1:3), g = c(1:3))) 

如何对这些data.frame中的变量进行排序,使变量的顺序与data.frame$aa的顺序相同?如果data.frame没有相应的ign变量,则应将该变量创建到此包含NA数据的data.frame中。你知道如何做到这一点吗?

你想要这样的东西吗

> lapply(A, function(x) {
+   x[(setdiff(names(A$aa), names(x)))] <- NA
+   x[names(A$aa)]
+ })
$aa
  var1 varb abu
1    1    1   1
2    2    2   2
3    3    3   3

$bb
  var1 varb abu
1    1    1   1
2    2    2   2
3    3    3   3

$cc
  var1 varb abu
1   NA    1  NA
2   NA    2  NA
3   NA    3  NA

这是一个非常简单和优雅的解决方案。我现在是一个终身爱好者,但只能通过+1来表达。我想在data.frame中保留这些变量。它们应该在data.frame的最右边排序
> lapply(A, function(x) {
+   x[(setdiff(names(A$aa), names(x)))] <- NA
+   x[names(A$aa)]
+ })
$aa
  var1 varb abu
1    1    1   1
2    2    2   2
3    3    3   3

$bb
  var1 varb abu
1    1    1   1
2    2    2   2
3    3    3   3

$cc
  var1 varb abu
1   NA    1  NA
2   NA    2  NA
3   NA    3  NA
> lapply(A, function(x) {
+   x[setdiff(names(A$aa), names(x))] <- NA
+   x[c(names(A$aa), setdiff(names(x), names(A$aa)))]
+ })
$aa
  var1 varb abu
1    1    1   1
2    2    2   2
3    3    3   3

$bb
  var1 varb abu vara
1    1    1   1    1
2    2    2   2    2
3    3    3   3    3

$cc
  var1 varb abu g
1   NA    1  NA 1
2   NA    2  NA 2
3   NA    3  NA 3