используя данные ОП, ответ будет
ю что естьмного связанные вопросы здесь, на SO, но я ищу решение мурлыкания, пожалуйста, не одно из списка примененных функций или cbind / rbdind (я хочу воспользоваться этой возможностью, чтобы лучше узнать мурлыканье).
У меня есть список фреймов данных, и я хотел бы добавить новый столбец для каждого фрейма данных в списке. Значением столбца будет имя кадра данных, т. Е. Имя каждого элемента в списке.
Есть нечто подобноеВот, но это включает в себя использование функции иmutate_each()
тогда как мне нужно простоmutate()
.
Чтобы дать вам представление о списке (называетсяcomentarios
), вот первая строкаstr()
по первому элементу:
> str(comentarios[1])
List of 1
$ 166860353356903_661400323902901:'data.frame': 13 obs. of 7 variables:
Поэтому я хотел бы, чтобы моя новая переменная содержала166860353356903_661400323902901
для 13 строк в результате, в качестве идентификатора для каждого кадра данных.
Что я пытаюсь это:
dff <- map_df(comentarios,
~ mutate(ID = names(comentarios)),
.id = "Group"
)
Тем не мение,mutate()
Для работы нужно имя датафрейма:
Error in mutate_(.data, .dots = lazyeval::lazy_dots(...)) :
argument ".data" is missing, with no default
Не имеет смысла вводить каждое имя, я бы заблудился на территории цикла и потерял бы преимущества мурлыкания (и R, в более общем смысле). Если бы список был меньше, я бы использовалreshape::merge_all()
, но в нем более 2000 элементов. Заранее благодарю за любую помощь.
редактировать: некоторые данные, чтобы сделать проблему воспроизводимой, в соответствии с комментариями Алистер
# install.packages("tidyverse")
library(tidyverse)
df <- data_frame(one = rep("hey", 10), two = seq(1:10), etc = "etc")
list_df <- list(df, df, df, df, df)
names(list_df) <- c("first", "second", "third", "fourth", "fifth")
dfs <- map_df(list_df,
~ mutate(id = names(list_df)),
.id = "Group"
)