#r #dataframe #loops #object #iteration
#r #dataframe #циклы #объект #итерация
Вопрос:
У меня есть несколько фреймов данных в виде объектов R, названных с префиксом и числом. Каждый фрейм данных имеет те же имена столбцов и номера, что и имена строк.
Я пытаюсь добавить столбец на основе итерации объекта. Я пытаюсь выполнить следующее:
x <- 1
repeat{
get(paste0('prefix', x))$iteration <- x-1
x = x 1
}
Однако я получаю следующую ошибку:
target of assignment expands to non-language object
Не могли бы вы объяснить, почему это не работает, и предложить решение?
Спасибо.
Ответ №1:
Получите значения объектов, которые начинаются с ‘prefix’, за которыми следуют любые цифры, в a list
(‘lst1’), затем используйте Map
для создания нового столбца путем вычитания 1 из числовой части имени объекта (‘v1’), используйте list2env
для отражения изменений в исходных объектах в глобальной среде
lst1 <- mget(ls(pattern = '^prefix\d
))
v1 <- as.numeric(sub("prefix", "", names(lst1))) -1
lst1 <- Map(cbind, lst1, iteration = v1)
list2env(lst1, .GlobalEnv)