List 如何对列表中的变量排序?
我有一个data.frames列表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
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