将命名向量添加到列表中

问题描述 投票:0回答:4

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

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

如果我想添加一个具有指定名称的向量,我应该可以通过以下方式做到这一点:

c(f = 1:5, lst)

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

如何抑制这种行为?

我知道我可以使用

lst$f <- 1:5

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

r list append
4个回答
33
投票

f
变成一个列表,然后将其连接起来:

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

18
投票

你可以这样做:

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(lst, list(f=1:5), after=0)# after - position to append
© www.soinside.com 2019 - 2024. All rights reserved.