从一个创建两个列表

时间:2014-05-11 21:34:37

标签: r list

我使用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 个答案:

答案 0 :(得分: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)))