更新R中每个列表元素的第一个值

时间:2016-05-31 07:49:58

标签: r list

我想用同一元素中的第二个值替换每个列表元素中的第一个值。

例如,我想要一个函数将lst转换为lst2

lst<-list(c(0:4),c(5:9))
lst

lst2<-list(c(1, c(1:4)),c(6,c(6:9)))
lst2

我知道我可以做到

lst[[1]][1]=lst[[1]][2]
lst[[2]][1]=lst[[2]][2]

但是我想要一个迭代所有列表元素的函数。我尝试了各种各样的事情(都是不成功的),例如:

lapply(list, function(x) x[1]=x[2])

1 个答案:

答案 0 :(得分:4)

我们可以使用lapply循环遍历list,如果我们使用匿名函数调用,则需要返回x

lstN <- lapply(lst, function(x) {x[1] <- x[2]
                         x})
identical(lst2, lstN)
#[1] TRUE