Выполните итерацию по объектам R фрейма данных и добавьте столбец

#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)