Список, содержащий таблицы данных - Невозможно использовать функцию для переименования столбцов? - PullRequest
0 голосов
/ 14 октября 2018

У меня есть 20 файлов Excel, содержащих данные на уровне города за каждый год.Я импортировал их в список, потому что думал, что их будет проще зацикливать.Первая задача, которую я хотел сделать, это изменить имя второго столбца каждого файла.Если для одного файла я делаю:

#data is a list of data tables/frames. Example:
data<-list(a = data.frame(1:2,3:4),b = data.frame(5:8,15:18) )

#renaming first column of a (works)
names(data[[1]])[2]<-"ABC"

, я могу переименовать столбец.Чтобы выполнить пакетное редактирование, я хотел написать функцию, которая будет использоваться в lapply.Функция должна быть простой версией вышеупомянутой вещи:

 rename <-function(df){
  names(df)[2]<-"XYZ"}

Переименовать (данные [[1]]), однако, ничего не делает для второго столбца.Есть идеи почему?

1 Ответ

0 голосов
/ 15 октября 2018

Вам нужно возвращать полностью измененный объект на каждой итерации:

data <- lapply( data, function(x) {names(x)[2]<-"ABC"; x})
data
#---------
[[1]]
  X1.2 ABC
1    1   3
2    2   4

[[2]]
  X5.8 ABC
1    5  15
2    6  16
3    7  17
4    8  18

Я уверен, что это дубликат, но я не знаю, какие могут быть правильные условия поиска, поэтому япросто отвечаю ... снова.

...