按名称

时间:2018-05-06 16:33:31

标签: r

例如,如果我有一个名为" mylist"的列表(请运行以下代码以查看初始结构的示例):

list1 <- list(b = 2 , c = 3  , a=7)
list2 <- list(f="g" , d = "a", c = "b" , e="f")
list3 <- list(i=10 ,o="b", j=7 , m="a")
sublist1 <- list(list1, list2)
mylist <- list(sublist1, list3)

有没有办法根据名称按字母顺序对列表和子列表进行排序? (请运行以下代码,以查看名为&#34; mylist&#34;的列表中所需输出的示例。)

list1 <- list(a = 7  , b = 2   , c=3)
list2 <- list(c = "b", d = "a" , e="f", f="g")
list3 <- list(i=10 , j=7 , m="a",o="b")
sublist1 <- list(list1, list2)
mylist <- list(sublist1, list3)

我最终希望将其转换为如下数据框:

mylist<-data.frame(t(c("7", "2", "3", "b", "a", "f", "g", "10", "7" ,"a", "b")))
names(mylist)<-c("a","b","c1","c2","d","e","f","i","j","m","o")

作为第二个问题,是否可以完成列表和子列表以使它们具有相同的结构?它看起来像这样(空案例填充&#34;。&#34;,请运行以下代码,以查看名为&#34; mylist&#34;的列表中所需输出的示例:

list1 <- list(a = 7, b = 2   , c=3     , d="."  , e=".", f="." )
list2 <- list(a=".", b = "." , c = "b" , d = "a", e="f", f="g" )
list3 <- list(i=".",j="."    , m="."   , o=".")
sublist1<-list(list1,list2)
sublist1<-list(sublist1,list3)


list4 <- list(a=".", b = "." , c=  "." , d="."  , e=".", f="." )
list5 <- list(a=".", b = "." , c = "." , d="."  , e=".", f="." )
list6 <- list(i=10 , j=7     , m="a"   , o="b")
sublist2<-list(list4,list5)
sublist2<-list(sublist2,list6)

mylist <- list(sublist1, sublist2)

我最终希望将其转换为如下数据框:

firstrow<-(c("7", "2", "3", ".", ".", ".", ".", ".", "b" ,"a", "f", "g", ". ", ".", ".", "."))
secondrow<-(c(".", ".", ".", ".", ".", ".", ".", ".", "." ,".", ".", ".", "10", "7", "a", "b"))
mylist<-t(data.frame(firstrow, secondrow))
colnames(mylist)<-c("a1","b1","c1","d1","e1","f1","a2","b2","c2","d2","e2","f2","i","j","m","o")
rownames(mylist)<-c("1","2")

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用基本R代码按名称对列表进行排序,并将其应用于每个子列表。您可能首先将该列表排除在数据框之外。

list1 <- list(b = 2 , c = 3  , a=7)

list1[order(names(list1))]
#> $a
#> [1] 7
#> 
#> $b
#> [1] 2
#> 
#> $c
#> [1] 3