Измените имена строк каждого набора данных в цикле в R

#r #dataframe #indexing

#r #фрейм данных #индексирование

Вопрос:

Я пытаюсь изменить индекс моей базы данных. У них одинаковое имя, меняется их номер (dataset_id_1, dataset_id_2, …., dataset_id_76). Наборы данных представлены в формате dataframe и имеют по 8 столбцов в каждом.

Я хотел бы изменить текущий индекс каждого (288 строк) с 740 на 1027.

Я попробовал следующее, но безуспешно:

 range = c(740:1027)
    
for (i in 1:76) {
  rownames(dataset_id_[[i]]) = range
}
 

Вы знаете, как решить проблему?

Комментарии:

1. Можете ли вы уточнить формат ваших данных? У вас есть фрейм данных или матрица, где каждая строка называется dataset_id_1, dataset_id_2 и т.д.? Или у вас есть список данных или что-то еще? Также поможет небольшой пример.

2. Конечно, извините за это. все dataset_id_i представляют собой фрейм данных с 8 столбцами в каждом. По сути, они сортируются по идентификатору из большего фрейма данных.

Ответ №1:

Должно работать следующее:

 new_index <- 740:1027

for (i in 1:76) { 
   temp <- get(paste0('dataset_id_',i))
   rownames(temp) <- new_index
   assign(paste0('dataset_id_',i),temp)
}
 

Вы можете получить имя каждого набора paste0('data_set_id_',i) данных, а затем get команда позволяет вам получить доступ к фактическому фрейму данных из символьного имени набора данных. У этого объекта изменены имена строк, затем assign команда повторно присваивает этому новому объекту исходное имя.

Однако может быть более естественный способ выполнить требуемую операцию на этапе, когда вы создаете каждый из этих фреймов данных из большего.

Комментарии:

1. Отлично, я рад это слышать!!