Что я пытаюсь сделать, так это установить имя элемента списка динамически в R из предопределенной строки и с использованием нестандартной оценки.
См. Пример ниже:
library(rlang)
dynamic.listname <- "important.name"
# this works (as was also demonstrated in the answer to this related question: https://stackoverflow.com/questions/35034384/dynamically-creating-named-list-in-r ):
list.to.display <- list(1,2,3)
names(list.to.display) <- c("first.fixed.name", dynamic.list.name, "second.fixed.name")
# But I would like something like this to work
list.to.display <- list(
"first.fixed.name" = 1,
!!dynamic.listname := 2,
"second.fixed.name" = 3
)
# it gives the following error:
# Error: `:=` can only be used within a quasiquoted argument
Я основал приведенный выше код на примере tidyverse, последнем абзаце с названием «Установка имен переменных» на этом веб-сайте: https://dplyr.tidyverse.org/articles/programming.html
Таким образом, «dynamic.listname» следует сначала оценить как строку, которая была сохранена внутри этой переменной. Затем эта строка должна быть реализована как одно из имен в списке. Кто-нибудь знает, как реализовать нестандартную оценку в этой ситуации? Base R мне тоже подходит. Причина, по которой я хотел бы использовать другие параметры, которые в настоящее время еще не работают, заключается в том, что список, который я хочу использовать, встроен в определенную функцию пакета и, таким образом, немного сложен для манипулирования извне. Кроме того, я стараюсь больше узнать о нестандартной оценке.
names(list.to.display) <- c("first.fixed.name", eval(dynamic.listname), "second.fixed.name")
. - person ulfelder   schedule 24.02.2020