#r #tidyverse
Вопрос:
Я пытаюсь переименовать объект списка, в котором имя объекта объединяется либо с помощью str_c (), либо с помощью функции вставки (), но, похоже, это не работает. Я бы предположил, что это возможно, но я не могу понять, как это сделать.
# some data
params <- tibble(col1=c(1,2,3), col2=c("a", "b", "c"))
# create empty list
all_output <- list()
# append new df to list
all_output <- append(all_output, list("this_works_fine" = params))
# append new df to list using the concatenated string
all_output <- append(all_output, list(str_c("this_", "does_", "not_", "work") = params))
Спасибо за вашу помощь!
Ответ №1:
Используйте либо setNames
или
append(all_output, setNames(list(params), str_c("this_", "does_", "not_", "work")))
-выход
$this_works_fine
# A tibble: 3 × 2
col1 col2
<dbl> <chr>
1 1 a
2 2 b
3 3 c
$this_does_not_work
# A tibble: 3 × 2
col1 col2
<dbl> <chr>
1 1 a
2 2 b
3 3 c
или использовать lst
с dplyr
помощью :=
append(all_output, lst(!!str_c("this_", "does_", "not_", "work") := params))
-выход
$this_works_fine
# A tibble: 3 × 2
col1 col2
<dbl> <chr>
1 1 a
2 2 b
3 3 c
$this_does_not_work
# A tibble: 3 × 2
col1 col2
<dbl> <chr>
1 1 a
2 2 b
3 3 c