В рамках моего проекта я хочу запрограммировать функцию, которая присваивает имена элементам списка, у которых нет имен. Имя должно совпадать с именем переменной.
Вот пример:
returnNamedListofDataFrames.Test <- function(...) {
# read inputs in list
inputs <- list(...)
# assign names to data frame list elements that have no names
# ???
inputs <- inputs %>% setNames(lapply(inputs[(names(inputs) == "") %>% which],
function(x) deparse(substitute(x))))
# return
return(inputs = inputs)
}
# input data
a = data.frame(value = 1)
b = data.frame(value = 2)
output <- returnNamedListofDataFrames.Test(c = a, # named element, name should stay "c"
b) # unnamed element, name should be "b"
expected.output <- list(c = a,
b = b)
Здесь вывод:
> output
$`X[[i]]`
value
1 1
$<NA>
value
1 2
Причины:
- Функция setNames получает только один элемент, но setNames требует имена для всех элементов, поэтому один из них — NA.
- Трюк
deparse(substitute(x))
не работает внутри такого вызова функции.
Я не знаю, как решить эти проблемы, и приветствую любые советы.
Для справки вывод должен быть:
> expected.output
$c
value
1 1
$b
value
1 2
setNames(mget(c('a', 'b')), c('c', 'b'))
- person akrun   schedule 08.11.2017