创建深度等于2的列表

时间:2013-05-14 11:34:40

标签: r list subscript

我有一个深度等于2的列表。我想按以下示例所述下标该列表:

my.list<-list(
  a=list(
    a1=1:10,
    a2=11:20),
  b=list(
    b1=21:30,
    b2=31:40),
  c=list(
    c1=41:50,
    c2=51:60)
)
# choose a specific item 
my.list[[2]][[2]][[3]]

# choose all first items from a1,a2,b1,b2,c1,c2
test<-list()
for(i in 1:3)
  for (j in 1:2)test[[i]][[j]]<-my.list[[i]][[j]][[1]]

test

Error in `*tmp*`[[i]] : subscript out of bounds

但这不起作用,因为我创建的列表中没有列表。有用的是这样做:

test<-list()
for(i in 1:3)
  for (j in 1:2)test[[i]]<-my.list[[i]][[j]][[1]]

然后

test<-list()
for(i in 1:3)
  for (j in 1:2)test[[i]][[j]]<-my.list[[i]][[j]][[1]]

test

给出:

[[1]]
[1]  1 11

[[2]]
[1] 21 31

[[3]]
[1] 41 51

...

1 个答案:

答案 0 :(得分:2)

以下代码是否解决了您的问题?

lapply(my.list, sapply, head, 1)

my.list中的每个条目提供每个向量的第一个元素:

$a
a1 a2 
 1 11 

$b
b1 b2 
21 31 

$c
c1 c2 
41 51