如何在R中仅使用lapply命名列表元素

时间:2018-11-12 22:56:20

标签: r apply lapply

这是我的列表:

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)

有帮助吗?

1 个答案:

答案 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