我有以下数据框
d1 <- tibble(condition = c("a", "b"), x = c(1, 1)) %>% group_by(condition)
d2 <- tibble(condition = c("a", "b"), y = c(2, 2)) %>% group_by(condition)
d3 <- tibble(condition = c("a", "b"), z = c(3, 3)) %>% group_by(condition)
我想构建数据框d
d1_nest <- d1 %>% nest(.key = d1)
d2_nest <- d2 %>% nest(.key = d2)
d3_nest <- d3 %>% nest(.key = d3)
d <- d1_nest %>% left_join(d2_nest) %>% left_join(d3_nest)
我想用函数
来做my_fun(list(d1, d2, d3))
我从
开始my_fun <- function(l) {
l %>% map(nest)
}
问题是我想在nest的.key
参数中提供数据框的名称(d1,d2和d3),但我不知道该怎么做。
我想一旦我可以加入.key
参数,就应该很容易使用left_join
来应用reduce
。
答案 0 :(得分:1)
您必须使用其名称映射dfs。一种方法是map2()
但是purrr现在有imap()
,如果不存在则提供默认名称。最后,由于.key
是一个准引号参数,因此您需要取消引用该名称。
my_fun <- function(l) {
imap(l, function(df, name) nest(df, .key = !!name))
}