我喜歡dplyr
中的bind_rows
函數,但我發現它很煩人,當通過.id
參數時,它只能在新列中添加一個數字索引。在R中訪問對象名稱和綁定
我正在嘗試寫一個bind_rows_named
函數,但我被卡住訪問對象名稱。這符合預期:
bind_name_to_df <- function(df){
dfname <- deparse(substitute(df))
df %>% mutate(label=dfname)
}
a <- data_frame(stuff=1:10)
bind_name_to_df(a)
但我不能解決如何將它應用到數據框的列表,例如,使用。點。我想這工作,但我知道我有...
錯誤的語義莫名其妙。任何人都可以放光?
b <- data_frame(stuff=1:10)
bind_rows_named <- function(...){
return(
bind_rows(lapply(..., bind_name_to_df)))
}
bind_rows_named(a, b)
在其他上下文中,我使用了便捷函數「Hmisc :: llist」,它與「list」類似,只是它保留了名稱或標籤變量'label'屬性中的組件變量。「因此,在這裏它會是'bind_rows(Hmisc :: llist(a,b),.id =「label」)' – Henrik
在這裏只找到了一些其他很好的'base'選項:[可以根據輸入創建自己的名字對象名稱?](https://stackoverflow.com/questions/16951080/can-lists-be-created-that-name-themselves-based-on-input-object-names) – Henrik
來自'.id'的標籤是隻有當你不給'bind_rows'命名參數時纔是整數。請參閱'bind_rows(a = a,.id =「label」)'。當你有一個命名列表時,它可以很好地工作,這使得'Hmisc :: llist'可以方便地創建一個列表。 – aosmith