从一个列表创建两个列表
Posted
技术标签:
【中文标题】从一个列表创建两个列表【英文标题】:Creating two lists from one 【发布时间】:2014-06-29 04:12:57 【问题描述】:我使用lapply(list, table)
来获取我的元素在列表中的频率。有没有办法将此列表分成两个单独的列表?
l1 <- c("1030","110"....) #Factors
l2 <- c(2,1,...) #Numbers
$`1`
1030 110 130 15 164 20 212 227 27 282 289 293 30 303 317 318 344 404 41 462 471
2 1 12 11 4 1 4 1 5 1 5 2 1 4 1 5 1 1 2 2 3
476 48 480 486 5 502 52 521 522 526 56 577 58 590 60 607 624 634 645 659 66
2 20 1 4 5 1 1 2 5 2 1 1 1 1 6 2 1 1 1 2 3
664 674 686 69 737 803 810 815 85 86 87 885 89 894 91 913 917 96 963 970 98
1 1 4 2 1 1 1 1 6 1 3 2 1 1 1 2 1 5 1 1 1
99
4
【问题讨论】:
【参考方案1】:使用names
获取表的名称(即用于l1)并使用unname
从未列出的向量中删除名称属性(即用于l2)。
# some data
s <- list(sample(1:10, 100, T), sample(1:10, 100, T))
l <- lapply(s, table)
# if you want to combine all elements of list together
l1 <- names(unlist(l))
l2 <- unname(unlist(l))
# you want to maintain the list structure
lapply(l, function(i) list(l1=names(i), l2=unname(i)))
【讨论】:
以上是关于从一个列表创建两个列表的主要内容,如果未能解决你的问题,请参考以下文章