gpt4 book ai didi

r - 使用 map/apply 函数迭代执行连接的整洁方法

转载 作者:行者123 更新时间:2023-12-05 02:58:36 24 4
gpt4 key购买 nike

我想使用 map/lapply 加入/合并多个 tibbles/数据框。如何才能做到这一点?

可重现的例子:

set.seed(42)
df <- tibble::tibble(rank = rep(stringr::str_c("rank",1:10),10),
char_1 = sample(c("a","b","c"), size = 100, replace = TRUE),
points = sample(1:10000, size = 100)
)
my_top <- seq(10,90, by= 10) %>%
as.list() %>%
set_names(c(stringr::str_c("sample_",1:9)))

my_list_1 <- map(my_top , ~ df %>%
sample_n(.x) %>%
mutate(!!str_c(.x, "_score") := sample(1:10000, size = .x)))

我想执行这个:

df  %>% group_by(rank, char_1, points) %>% 
left_join(my_list_1[[1]] ) %>%
left_join(my_list_1[[2]] ) %>%
left_join(my_list_1[[3]] )

依此类推......使用map函数。

我试过这个:

map(as.list(names(my_top)), ~ df  %>% group_by(rank, char_1, points) %>% 
left_join(my_list_1[[.x]] ))

但是,当然,它不会在某个地方保存已连接的 tibble,以便与它进行新的连接!

最佳答案

一个选项是reduce

library(dplyr)
library(purrr)
df %>%
group_by(rank, char_1, points) %>%
list(.) %>%
c(., my_list_1[1:3]) %>%
reduce(left_join)

关于r - 使用 map/apply 函数迭代执行连接的整洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58805862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com