test <- list(a = list("first"= 1, "second" = 2),
b = list("first" = 3, "second" = 4))
在上面的列表中,我想将“第一”元素重新分配给相等的,比方说,五。这个for循环有效:
for(temp in c("a", "b")) {
test[[temp]]$first <- 5
}
有没有办法使用矢量化操作(lapply等)来做同样的事情?以下提取值,但我无法重新分配它们:
lapply(test, "[[", "first")
答案 0 :(得分:4)
以下是使用unlist
和relist
:
relist((function(x) ifelse(grepl("first",names(x)),5,x))(unlist(test)),test)
$a
$a$first
[1] 5
$a$second
[1] 2
$b
$b$first
[1] 5
$b$second
[1] 4
答案 1 :(得分:3)
你可以这样做:
test <- lapply(test, function(x) {x$first <- 5; x})