Преобразование имен векторных объектов в теги списка векторов с R

У меня есть несколько векторов, например:

months <- c("january", "february", "march", "october", "december") 
weekdays <- c("Sunday", "Monday", "Tuesday")
seasons <- c("Summer", "Winter", "Fall", "autumn")

И я хочу создать такой список

timeWords_list <- list(months,  weekdays, seasons)

Есть ли способ пометить объекты списка непосредственно именами векторных объектов?

Желаемого результата можно добиться так:

names(timeWords_list) <- c("months",  "weekdays", "seasons")

Но есть ли способ сделать это напрямую? Без переписывания этих имен (в строковом векторе)?


person Fidel Alencar    schedule 05.01.2021    source источник
comment
tibble::lst сделает это за вас, если хотите.   -  person r2evans    schedule 05.01.2021


Ответы (2)


Попробуйте любой из этих однострочных. Первый требует, чтобы каждое имя было написано дважды, но не нужно указывать символьный вектор имен, а цель кода очень ясна. Второй требует только, чтобы имена были написаны один раз. Третий не требует, чтобы имена были записаны вообще, но работает только в том случае, если нет других переменных, имена которых заканчиваются на s - если бы такие имена были, эти переменные также были бы включены в список.

Пакеты не используются.

L1 <- list(months = months, weekdays = weekdays, seasons = seasons)

L2 <- mget(c("months", "weekdays", "seasons"))

L3 <- mget(ls(pattern = "s$"))
person G. Grothendieck    schedule 05.01.2021
comment
Я предположил, что первое было известно, но, оглядываясь назад, я все равно должен был включить его, на всякий случай. Я так часто рекомендую не использовать _1 _ / _ 2_ функции (при злоупотреблении), что постоянно забываю о них при законном использовании, подобном этому. - person r2evans; 05.01.2021