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