在列表中列出,如何访问元素?

时间:2014-03-19 13:43:36

标签: r

我有一个函数需要返回两个不同类型的向量组。我可以使用由两个矩阵组成的列表来做到这一点,其中我想要返回的向量对应于矩阵中的列,但由于向量都具有不同的长度,我想将这些向量本身保存在列表中,所以我有一个由两个列表组成的列表。

我想现在将向量添加到子列表中,但不知道要使用哪些索引。

例如,如果我想将矢量x添加到列表中的第一个子列表(称之为l),我该怎么做?

l[[1]] <- x

只会替换第一个子列表中的第一个向量,但是如何使用索引访问子列表中的第二个元素?

3 个答案:

答案 0 :(得分:7)

要将元素添加到子列表,请从列表开始:

l <- list(list(1:3), list(5:8))             
str(l)

看起来像这样:

List of 2
 $ :List of 1
  ..$ : int [1:3] 1 2 3
 $ :List of 1
  ..$ : int [1:4] 5 6 7 8

在列表中添加另一个向量:

l[[1]] <- c(l[[1]], list(100:103))
str(l)

产地:

List of 2
 $ :List of 2
  ..$ : int [1:3] 1 2 3
  ..$ : int [1:4] 100 101 102 103
 $ :List of 1
  ..$ : int [1:4] 5 6 7 8

答案 1 :(得分:3)

我不明白你究竟是什么意思。但是你可以使用包含两个列表的列表:

a=list();
a[[1]]=c(1,2,3);
a[[2]]=c(3,4,5);
a[['key']]=c(5,6,7)
a[[1]][1] //the first element in sublist 1
a[['key']][2] //the second element in sublist 'key'

如果你想存储两个向量,可能是一个矩阵就是你所要的

a[[1]]=cbind(a[[1]], c(2,3,4))
a[[1]][,1] //the first vector in sublist 1

答案 2 :(得分:1)

你可以列出两个向量:

l <- vector("list", 2)
l[[1]] <- 1:3
l[[1]] <- list(l[[1]],2:4)