Назовите или переименуйте объект списка в R с помощью str_c() или вставьте()

#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