要在R中的列表中的每个元素中添加新值?

时间:2012-11-07 06:00:22

标签: r list

这里是list1,其中只有两个元素 - “name”和“age”,每个元素中都有两个值,现在我想添加新值每个元素,

list1<-list(name=c("bob","john"),age=c(15,17))
list1
$name
[1] "bob"  "john"

$age
[1] 15 17
list1[[1]][3]<-"herry"
list1[[2]][3]<-17
list1
$name
[1] "bob"   "john"  "herry"

$age
[1] 15 17 17

有更简单的方法吗?

2 个答案:

答案 0 :(得分:0)

这取决于你想做什么。如果要为列表中的每个元素添加不同的值,我认为最简单的方法是:

Vec <- c("herry",17,...)
i=0 
list1 <- lapply(list1, function(x) {i=i+1 ; append(x,Vec[i])})

如果列表中的每个向量具有相同的长度,那么您也可以使用一些快捷方式。 如果要为列表中的每个元素添加相同的值:

list1 <- lapply(list1, function(x) append(x, "NewEl"))

答案 1 :(得分:0)

rlist库提供了@Sven Hohenstein提供的解决方案的替代方法。这不是更好,但阅读起来更直观。如果密钥相同,则对IMHO进行编程会容易一些。

library(rlist) list1 <- list.append(list1, key=value)

请注意,密钥编写时不带引号。因此,在您的示例中,它将是:

library(rlist) list1 <- list.append(list1, henry=17)