Создайте именованный пустой список на основе имен данных и столбцов - PullRequest
2 голосов
/ 20 апреля 2020

Я хочу создать пустой список, который принимает имя информационного кадра и содержит пустые элементы внутри, на основе имени информационного кадра

То, что я пробовал - не работает

my_list_function <- function(thedata) {
  list(
    x = map(names(x), ~ .x = list())
  ))
}

Я хочу иметь возможность запустить

my_list_function(mtcars)

и получить вывод:

Желаемый вывод

list(
  mtcars = list(
    mpg = list(),
    cyl = list(),
    disp = list(),
    hp = list(),
    drat = list(),
    wt = list(),
    qseq = list(),
    vs = list(),
    am = list(),
    gear = list(),
    carb = list()
  )
)

Ответы [ 2 ]

3 голосов
/ 20 апреля 2020

Использование purrr:

library(purrr)
map(mtcars, ~ list())

Если вы хотите, чтобы имя самих данных в списке, вы можете попробовать это:

my_list_function <- function(data) {
  .data <- rlang::enquo(data)

  list(map(data, ~ list())) %>% 
    set_names(rlang::as_name(.data))
}

my_list_function(mtcars)
1 голос
/ 20 апреля 2020

Мы можем использовать setNames

my_list_function <- function(data) {
     nm1 <- deparse(substitute(data))
    setNames(list( setNames(rep(list(list()), length(data)), names(data))), nm1)
      }

my_list_function(mtcars)
#$mtcars
#$mtcars$mpg
#list()

#$mtcars$cyl
#list()

#$mtcars$disp
#list()

#$mtcars$hp
#list()
# ...

Или используя purrr

library(purrr)
library(dplyr)
my_list_function <- function(data) {


   lst(!! enquo(data) := map(data, ~ list()))
  }
my_list_function(mtcars)
#$mtcars
#$mtcars$mpg
#list()

#$mtcars$cyl
#list()

#$mtcars$disp
#list()

#$mtcars$hp
#list()
# ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...