2
我有等于2的深度,我想在下面的例子中所描述的下标是列表的列表:与深度等于创建列表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
...
是的,我认为这将有助于我莫名其妙。不过我想知道是否在创建新列表时没有任何内置的内建功能。 – Johannes 2013-05-14 12:37:18
我觉得'lapply'是你正在寻找的内置函数:它迭代一个列表,创建一个新列表并返回它。参见'lapply' – user1981275 2013-05-14 12:43:17
从你的编辑中我可以看到你想要的结果是一个有三个条目的列表,每个条目都包含一个向量。由于'lapply'返回一个列表,你可以使用'sapply'包装器来返回一个向量。我将编辑答案。 – user1981275 2013-05-14 12:45:33