我知道有許多有關的問題在這裏,但我正在尋找一個嗚嗚聲解決方案,請不要從申請名單函數或cbind/rbdind(我想借此機會更好地瞭解嗚嗚聲)。添加新變量到數據幀列表與purrr和mutate()從dplyr
我有一個數據框的列表,我想添加一個新的列到列表中的每個數據幀。該列的值將是數據框的名稱,即列表中每個元素的名稱。
還有類似here,但它涉及到使用函數和mutate_each()
,而我只需要mutate()
。
爲了讓你列表(稱爲comentarios
)的想法,這裏是str()
第一要素上的第一行:
> str(comentarios[1])
List of 1
$ 166860353356903_661400323902901:'data.frame': 13 obs. of 7 variables:
所以我想我的新變量包含在166860353356903_661400323902901
13線結果作爲每個數據幀的ID。
我試圖爲:
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多個元素。預先感謝您的幫助。
編輯:一些數據來使問題重現的,按照alistaire的評論
# 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"
)
你需要讓你的榜樣[重複性(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#5963610)通過添加數據。 – alistaire
在這裏,我不認爲這是必要的,alistaire,這是一個關於語法的問題,而不是任何事情,正如傑克的答案所示。 – RobertMc
[It always necessary](http://stackoverflow.com/help/mcve),否則問題將被關閉。 [問] – alistaire