2

こんにちは、R のデータ フレームのリストに関する小さな問題を解決しようとしています。R には 5 つのデータ フレームのリストがあり、それらは名前順に並べられてd1d2ますd5。私のリストの構造は次のとおりです。

structure(list(d1 = structure(list(x = c("001", "002", "003", 
"004", "005", "006"), y = c(1, 2, 1, 1, 1, 1), z1 = c(1, 1, 1, 
1, 1, 1)), .Names = c("x", "y", "z1"), row.names = c(NA, 6L), class = "data.frame"), 
    d2 = structure(list(x = c("001", "002", "003", "004", "005", 
    "006", "007"), y = c(1, 2, 1, 1, 1, 1, 1), z2 = c(2, 2, 2, 
    2, 2, 2, 2)), .Names = c("x", "y", "z2"), row.names = c(NA, 
    7L), class = "data.frame"), d3 = structure(list(x = c("001", 
    "002", "003", "004", "005", "006", "007", "008"), y = c(1, 
    2, 1, 1, 1, 1, 1, 1), z3 = c(3, 3, 3, 3, 3, 3, 3, 3)), .Names = c("x", 
    "y", "z3"), row.names = c(NA, 8L), class = "data.frame"), 
    d4 = structure(list(x = c("001", "002", "003", "004", "005", 
    "006", "007", "008", "009"), y = c(1, 2, 1, 1, 1, 1, 1, 1, 
    1), z4 = c(4, 4, 4, 4, 4, 4, 4, 4, 4)), .Names = c("x", "y", 
    "z4"), row.names = c(NA, 9L), class = "data.frame"), d5 = structure(list(
        x = c("001", "002", "003", "004", "005", "006", "007", 
        "008", "009", "010"), y = c(1, 2, 1, 1, 1, 1, 1, 1, 1, 
        1), z5 = c(5, 5, 5, 5, 5, 5, 5, 5, 5, 5)), .Names = c("x", 
    "y", "z5"), row.names = c(NA, 10L), class = "data.frame")), .Names = c("d1", 
"d2", "d3", "d4", "d5"))

私の問題は、5 つ以上の要素を持つことができ、それらの名前を考慮して降順で配置する必要があることa5です。私はこのようなものが欲しいです:a4a3a2a1

list

a5

x   y z5
001 1 5

a4

x   y z4
001 1 4

a3

x   y z3
001 1 3

a2

x   y z2
001 1 2

a1

x   y z1
001 1 1

これがRで作成できるのを待って、パッケージから使用しようとしましたllplyplyr、その結果が得られません。ご協力いただきありがとうございます。

4

1 に答える 1

1

mixedorderパッケージから使用しgtools、リストがデータであると仮定します:

library(gtools)
dat[rev(mixedorder(names(dat)))]

または、正規表現を使用してOPによって提案されたとおり:

df.names=names(list) 
df.names=df.names[order(as.integer(sub("[a-z]", "", df.names)),
                        decreasing = TRUE)]   
list=list[df.names] 
于 2013-11-11T18:34:37.003 に答える