如何在R语言中不借助索引向向量列表追加向量?
如何在R中向列表追加向量且保留向量结构?
现有一个列表:
lExample <- list(c(0, 1, 0), c(1, 3), c(4, 1, 6))
以及两个需要追加到该列表的新向量:
v1 = c(5, 3) v2 = rep(4, 5)
目前的实现方式是手动指定索引:
lExample[[4]] <- v1 lExample[[5]] <- v2
但这种方法需要每次记住当前列表的长度,很麻烦。有没有类似c()的简便方法,既能追加向量,又不会像c(lExample, v1)那样把v1的每个元素拆成列表的单独元素?
当然有两种常用的简便方法:
方法1:将待追加向量包装为列表后使用c()
直接用c()时,如果传入普通向量,R会把向量的每个元素拆分成列表的单个元素。但如果把向量先放进列表里,再和原列表拼接,就能完整保留向量结构:
# 追加单个向量 lExample <- c(lExample, list(v1)) # 一次性追加多个向量 lExample <- c(lExample, list(v1), list(v2))
方法2:使用append()函数
R内置的append()函数专门用于向列表或向量追加元素,默认会保留待追加元素的结构:
# 追加单个向量 lExample <- append(lExample, list(v1)) # 一次性追加多个向量 lExample <- append(lExample, list(v1, v2))
执行上述任意一种方法后,lExample的第4个元素是完整的v1向量,第5个是完整的v2向量,完全符合需求。
内容的提问来源于stack exchange,提问作者Mr Frog
相关产品推荐
相关产品推荐

