В R, как указать аргумент по имени, если это имя является значением символьного вектора? - PullRequest
0 голосов
/ 15 февраля 2019

Допустим, мне нужно сделать это:

foo <- list(`a+b` = 5)

, но у меня 'a+b' (строка) сохранена в переменной, скажем name:

name <- 'a+b'

Как создать этот список с элементом, имя которого равно значению в переменной name?

Примечание: мне известны другие способы присвоения имен элементам списков.Список здесь только пример.Что я хочу понять, так это то, как я справляюсь с нестандартной оценкой, чтобы я мог указывать функции именованный аргумент, не вводя его непосредственно в строку.

Я прочитал Advanced R * 1015 Хэдли.* Глава 13 о нестандартной оценке, но я теряюсь в том, как это сделать.

Любое решение с базой R или Tidy Evaluation приветствуется.

1 Ответ

0 голосов
/ 15 февраля 2019

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

bar <- setNames(list(5), name)
identical(foo, bar)
#[1] TRUE

Или сначала создать объект, а затем использовать names

bar2 <- list(5)
names(bar2) <- name

или names<-

bar3 <- `names<-`(list(5), name)

Кроме того, опция tidyverse будет заключаться в кавычки (!!) и присваивать (:=)

library(tidyverse)
lst(!! name := 5)
#$`a+b`
#[1] 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...