如何使用tidy/purrr在不同tibble的多个列之间迭代,并为结果指定唯一的名称

如何使用tidy/purrr在不同tibble的多个列之间迭代,并为结果指定唯一的名称,r,R,我试图创建4个具有唯一名称的对象,这些对象保存来自多个rbinom运行的输出。每组rbinom运行使用从不同TIBLE的特定列中获取的不同概率。这是我手动完成的,我只想用迭代的方法重新创建它 collection_var_A <- rbinom(size = 20, n = 4 ,prob = (probs_tbl_A$value)) collection_var_B <- rbinom(size = 20, n = 4, prob = (probs_tbl_B$value)) co

我试图创建4个具有唯一名称的对象,这些对象保存来自多个rbinom运行的输出。每组rbinom运行使用从不同TIBLE的特定列中获取的不同概率。这是我手动完成的,我只想用迭代的方法重新创建它

collection_var_A <- rbinom(size = 20, n = 4 ,prob = (probs_tbl_A$value))
collection_var_B <- rbinom(size = 20, n = 4, prob = (probs_tbl_B$value))
collection_var_C <- rbinom(size = 20, n = 4, prob = (probs_tbl_C$value))
collection_var_D <- rbinom(size = 20, n = 4, prob = (probs_tbl_D$value))

collection\u var\u A您可以将TIBLES放入列表中,然后使用
map

list_df <- mget(ls(pattern = "probs_tbl_.*"))
list_output <- purrr::map(list_df, ~rbinom(size = 20, n = 4 ,prob = (.$value)))
list_output

#$probs_tbl_A
#[1]  9 14 18 11

#$probs_tbl_B
#[1] 10 16 11  7

#$probs_tbl_C
#[1] 16 15 16 15

#$probs_tbl_D
#[1] 13 15  8  8

我们可以使用
tidyverse
方法

library(tidyverse)
map(mget(paste0("probs_tbl_", LETTERS[1:4])), ~ .x %>%
            pull(value) %>%
            rbinom(size = 20, n = 4, prob = .))

非常感谢。我试试看。我以前没见过list2env()!
names(list_output) <- paste0("collection_var_", letters[seq_along(list_output)])
list2env(list_output, .GlobalEnv)
lapply(list_df, function(x) rbinom(size = 20, n = 4 ,prob = (x$value)))
library(tidyverse)
map(mget(paste0("probs_tbl_", LETTERS[1:4])), ~ .x %>%
            pull(value) %>%
            rbinom(size = 20, n = 4, prob = .))