我有一个函数需要返回两个不同类型的向量组。我可以使用由两个矩阵组成的列表来做到这一点,其中我想要返回的向量对应于矩阵中的列,但由于向量都具有不同的长度,我想将这些向量本身保存在列表中,所以我有一个由两个列表组成的列表。
我想现在将向量添加到子列表中,但不知道要使用哪些索引。
例如,如果我想将矢量x添加到列表中的第一个子列表(称之为l),我该怎么做?
l[[1]] <- x
只会替换第一个子列表中的第一个向量,但是如何使用索引访问子列表中的第二个元素?
答案 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)