Как я могу создать `alist`, когда у меня есть имена аргументов как символьный вектор? - PullRequest
1 голос
/ 14 марта 2019

Я могу сгенерировать alist как

alist(x = , y = )

Это может быть использовано для определения / переопределения формальных функций, таких как

f <- function() {}
formals(f) <- alist(x = , y = )
formals(f)
$x


$y

Как я могу генерировать те же формалы, когда у меня есть только имена аргументов как символьный вектор?

Сначала я попытался:

v <- c("x", "y")
vector("alist", length(v))

, но это выдает ошибку:

Ошибкаin vector («alist», length (v)): vector: не может создать вектор из режима «alist».

Во-вторых, я подумал, что могу построить выражение x = , y = с paste иparse, но при этом выдается еще одна ошибка:

string <- paste0(paste0(v, collapse = " = ,"), " = ") 
parse(text = string)

Ошибка при разборе (текст = строка):: 1: 5: неожиданно ',' 1: x =, ^

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

l <- vector("list", length(v))
names(l) <- v
l
$x
NULL

$y
NULL

Спасибо за любые подсказки!

1 Ответ

2 голосов
/ 14 марта 2019

Мы можем использовать bquote для создания list из symbols и назвать его элементами в объекте 'v'

l1 <- setNames(rep(list(bquote()), length(v)), v) 
identical(l1, alist(x=, y=))
#[1] TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...