Есть ли способ использовать mapply для двух векторов для создания именованного списка? Первый вектор будет иметь тип character
и содержать имена, используемые для списка, а второй - значения.Создание именованного списка из двух векторов (имена, значения)
До сих пор единственное решение, у меня есть:
> dummyList = list()
> addToList <- function(name, value) {
+ dummyList[[name]] <- value
+ }
> mapply(addToList, c("foo", "bar"), as.list(c(1, 2))
$foo
`1`
$bar
`2`
Это кажется довольно надуманным решением, но я не могу понять, как это сделать иначе. Проблемы у меня с ней:
Это требует создания
dummyList
dummyList
, хотя никогда не изменяется, и является пустой список после вызоваmapply
.Если числовой вектор,
c(1, 2)
, не преобразован в список, то результатом вызоваmapply
является именованный вектор удвоений.
Чтобы обойти проблему 2, я всегда могу просто позвонить mapply
на двух векторов, а затем вызвать as.list
на результат, но мне кажется, что там должен быть способ непосредственного создания списка, величина которых в вектор.
спасибо. Я не знал о функции 'setNames' и отлично подходит для моих целей. Из любопытства, есть ли способ сделать это, используя 'lapply', о котором вы знаете? Кажется возможным, поскольку 'lapply' может возвращать списки. –
Что вы подразумеваете под "использованием' lapply' "? Вы хотите выполнить ту же задачу, используя 'lapply'? (Если это так, почему? Как упражнение по программированию? Больше контекста было бы полезно.) Если вы хотите сделать что-то еще, отредактируйте свой вопрос или спросите нового? –