如何将唯一 ID 分配给数据框列表并在一次调用中应用其他功能

How to assign unique id to a list of dataframes AND apply other functions in one call

我有代码将 unique.id 分配给 my.list 和 left_joins 中的每个数据帧 new.df。

new.list = list(data.frame(x = c(1, 2), y = c("a", "b")), data.frame(x = c(1, 2), y = c("b", "b")))
new.df = data.frame(x = c(1, 2), y = c("a", "b"), z = c(1, 2))

new.list = Map(cbind, my.list, unique.id = (1:length(my.list)))

new.list = lapply(new.list, function(x) left_join(x, new.df))

你怎么能用一个电话写这个最好只使用 tidyverse?

您可以使用 imap -

library(dplyr)
library(purrr)

imap(new.list, ~.x %>% 
                  mutate(unique.id = .y) %>%
       left_join(new.df))

#[[1]]
#  x y unique.id z
#1 1 a         1 1
#2 2 b         1 2

#[[2]]
#  x y unique.id  z
#1 1 b         2 NA
#2 2 b         2  2