将命名向量添加到列表中

24

这个问题很基础,但我似乎无法解决它。

假设我有一个变量条目的列表:

lst <- list(a=1:4, b=rep('k', 5), c=3)

如果我想添加一个具有指定名称的向量,我应该能够通过以下方式实现:

c(f=1:5, lst)

但是它创建了五个条目(f1 - f5),而不是创建一个名为“f”的包含1 2 3 4 5的条目。

我该如何取消这种行为?

我知道可以使用

lst$f <- 1:5

但我想在函数调用中添加列表...

4个回答

31

f转换为一个包含一个元素的列表,然后进行连接:

c(list(f=1:5), lst)


16

你可以直接这样做:

lst[[key]] <- any_object

(注意双方括号 [[]] )

any_object当然可以是向量。

这种方法的优点是,即使key的确切值存储在变量中并且您事先不知道它,或者例如在for循环中迭代变量,它也可以使用:

count <- list()
for (k in c("boys","girls","other")) {
  count[[k]] <- sum(data == k)
}

14

这里有一个简单的函数,可以将一个或多个项附加到列表中:

lappend <- function (lst, ...){
lst <- c(lst, list(...))
  return(lst)
}

> a <- list()
> a
list()

> lappend(a,c(1,2,3))
[[1]]
[1] 1 2 3

> lappend(a, c(4,5,6), c(7,8,9))
[[1]]
[1] 4 5 6

[[2]]
[1] 7 8 9

希望这能帮到你!!再见。


8
更加灵活的解决方案是使用append:
append(lst, list(f=1:5), after=0)# after - position to append

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接