Как назвать элементы списка, используя только lapply в R - PullRequest
0 голосов
/ 13 ноября 2018

Это мой список:

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 голосов
/ 13 ноября 2018

Второй аргумент 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
...