У меня есть список данных, где все элементы имеют короткие индексы. Я пытаюсь добавить новый столбец к определенным фреймам данных, содержащим их настоящие имена на основе индекса-фрейм данных в списке, содержащем индексы (ключ) и реальные имена (имена).
Я на самом деле думал, что это довольно простая задача, пока не столкнулся с проблемами с индексами части назначения, как показано ниже:
# sample data
data_list <- list(data.frame(names=c("iris", "TootgGrowth", "airquality"), key=c("name01", "name02", "name03")),
iris, ToothGrowth, airquality)
names(data_list) <- c("index", "name01", "name02", "name03")
# adding a new column to selected list-dataframes
data_list[names(data_list) != "index"] <-
lapply(names(data_list)[names(data_list) != "index"],
function(x){data_list[x]$new_col <- data_list$index$names[data_list$index$key == x]})
Часть data_list$index$names[data_list$index$key == x]
дает мне правильные значения, которые я хотел бы присвоить, но я до сих пор не знаю, как правильно индексировать в части data_list[x]$new_col <-
, чтобы назначение работало. Я также пытался использовать assign(paste0("data_list$", x, "$new_col"), ...)
, что тоже явно не работает.
Спасибо за ваши предложения!