Я пытаюсь повторно вызвать функцию (в частности, Seurat :: DimPlot), где одним из аргументов является именованный список (Cell.highlight). Я планирую использовать purrr::imap
, чтобы позвонить. У меня есть именованный список, где каждый элемент списка представляет собой вектор символов. Я хотел бы создать список для аргумента Cell.highlight Seurat :: DimPlot. Когда я попробовал
imap(mylist, ~ DimPlot(seurat_obj, cells.highlight=list(.y=.x), cols="lightgrey",
cols.highlight="dodgerblue") )
Сюжет выглядит красиво, но вместо замены переменной .y именем элемента списка он оставляет имя элемента списка как «.y». (Так что на сюжете я вижу в легенде ".y"). Сделать SSCE
dp <- function(name, values){
list(name = values)
}
dp("a",paste0("a",1:3))
# $name
# [1] "a1" "a2" "a3"
где я хочу, чтобы это было
$a
[1] "a1" "a2" "a3"`
Я пробовал использовать enquo, as_name, используя ': =', ensym, quote, но я просто не могу понять это правильно. Я знаю, что вы можете разбить это на две строки, используя что-то вроде list [[name]] = ..., но поскольку это часть более крупной проблемы, я хотел бы узнать, как правильно заключать и отменять кавычки для имени переменной.
У меня всегда были проблемы с использованием NSE, даже после прочтения, перечитывания и перечитывания Advanced-R Хэдли Викхэмса глава о квазиквотах и его глава об оценке, но похоже, что все части есть, я просто не могу их соединить