Добавить строки-заполнители в список фреймов данных

#r #list #lapply

#r #Список #lapply

Вопрос:

У меня есть список фреймов данных.

 # Split dataframe into list of dataframes on two factor variables.
DF_list <- split(DF, list(DF$Unit_number, DF$Compartment), drop = TRUE)
  

Я знаю, как удалять строки из списков фреймов данных. Но на этот раз я хочу добавить строки.
1 строка-заполнитель в нижней части каждого фрейма данных в списке.

Это предотвратит создание в моих вычислениях скорости изменения ложных вычислений для разных уровней факторов, которые подкрепляют друг друга в обычной структуре фрейма данных.

Перед разделением по ячейке и номеру блока фрейм данных выглядит следующим образом;

 DF <- data.frame(Unit_number=c(1,1,2,2,2,1,2,2,1,1),
                 Compartment=c("Engine", "Engine", "Engine", "Transmission", "Transmission", "Transmission", "Tyres", "Tyres", "Tyres", "Tyres"))
  

Необходимый результат таков;

 Result <- data.frame(Unit_number=c(1,1,"Placeholder",2,"Placeholder",2,2,"Placeholder",1,"Placeholder",2,2,"Placeholder",1,1),
                 Compartment=c("Engine", "Engine","Placeholder", "Engine","Placeholder", "Transmission", "Transmission","Placeholder", "Transmission","Placeholder", "Tyres", "Tyres","Placeholder", "Tyres", "Tyres"))
  

Ответ №1:

Если мы хотим добавить тот же самый заполнитель в нижней части каждого списка, мы можем создать Placeholder_df и rbind его в конце каждого списка.

Используя purrr , map_dfr мы могли бы сделать

 Placeholder_df <-data.frame(Unit_number = "Placeholder",
                            Compartment = "Placeholder")

purrr::map_dfr(DF_list, ~ rbind(., Placeholder_df))

#   Unit_number  Compartment
#1            1       Engine
#2            1       Engine
#3  Placeholder  Placeholder
#4            2       Engine
#5  Placeholder  Placeholder
#6            1 Transmission
#7  Placeholder  Placeholder
#8            2 Transmission
#9            2 Transmission
#10 Placeholder  Placeholder
#11           1        Tyres
#12           1        Tyres
#13 Placeholder  Placeholder
#14           2        Tyres
#15           2        Tyres
#16 Placeholder  Placeholder
  

В базовом R мы могли бы сделать

 do.call(rbind, lapply(DF_list, function(x) rbind(x, Placeholder_df)))
  

Ответ №2:

С помощью base R мы можем использовать Map

 do.call(rbind, Map(rbind, DF_list, list(Placeholder_df)))
  

данные

 Placeholder_df <-data.frame(Unit_number = "Placeholder",
                        Compartment = "Placeholder")