这是我的列表:
l <- vector("list", 4)
l[[1]][1] <- list(c(1,2,3))
l[[1]][2] <- list(c(1,2,3))
l[[2]][1] <- list(c(1,2,3))
l[[2]][2] <- list(c(1,2,3))
l[[3]][1] <- list(c(1,2,3))
l[[3]][2] <- list(c(1,2,3))
l[[4]][1] <- list(c(1,2,3))
l[[4]][2] <- list(c(1,2,3))
我有以下矢量:mynames <- c("number one","number two")
如何使用带有lapply
向量的mynames
函数来命名列表元素?
我尝试了这个,但是没用:
lapply(l, names(x) <- mynames)
有帮助吗?
答案 0 :(得分:2)
lappyl()
的第二个参数必须是一个函数。一个人可以使用setNames()
:
named_list <- lapply(l, setNames, nm=mynames)
named_list[1:2]
[[1]]
[[1]]$`number one`
[1] 1 2 3
[[1]]$`number two`
[1] 1 2 3
[[2]]
[[2]]$`number one`
[1] 1 2 3
[[2]]$`number two`
[1] 1 2 3
基于替换功能`names<-`
的替代版本是:
named_list2 <- lapply(l, function(x, names) { names(x) <- names; x },
names=mynames)
identical(named_list, named_list2)
[1] TRUE