如何在for循环(R语言)中使用数据帧名称作为var的输入?

如何在for循环(R语言)中使用数据帧名称作为var的输入?,r,dplyr,purrr,R,Dplyr,Purrr,在R中,我定义了以下函数: race_ethn_tab <- function(x) { x %>% group_by(RAC1P) %>% tally(wt = PWGTP) %>% print(n = 15) } 我必须对几个数据集(大约10个不同的数据集)执行此操作,在这些数据集中,我更容易保持dfs的不同,而不是绑定它们并创建一个year变量。因此,我尝试使用for循环或purr::map()来迭代我的dfs列表 以下是我尝试过的: df

在R中,我定义了以下函数:

race_ethn_tab <- function(x) {
  x %>%
  group_by(RAC1P) %>%
  tally(wt = PWGTP) %>%
  print(n = 15) }
我必须对几个数据集(大约10个不同的数据集)执行此操作,在这些数据集中,我更容易保持dfs的不同,而不是绑定它们并创建一个
year
变量。因此,我尝试使用
for循环
purr::map()
来迭代我的dfs列表

以下是我尝试过的:

    dfs_test <- as.list(as_tibble(ca_pop_2000), 
                        as_tibble(ca_pop_2001), 
                        as_tibble(ca_pop_2002), 
                        as_tibble(ca_pop_2003), 
                        as_tibble(ca_pop_2004))

# Attempt 1: Using for loop

    for (i in dfs_test) {
      race_ethn_tab(i)
    }

# Attempt 2: Using purrr::map

    race_ethn_outs <- map(dfs_test, race_ethn_tab)

dfs\u test我们可以使用
mget
返回数据集的
列表
,然后在
列表
上循环并应用该函数

dfs_test <- mget(paste0("ca_pop_", 2000:2004))

如果在全局环境中已经创建了100个对象,而不是

list(ca_pop_2000, ca_pop_2001, .., ca_pop_2020)

这正是@RonakShah所需要的:


如果使用list而不是as.list,代码应该可以工作。见 as.列表(as_-tible(mtcars)、as_-tible(iris))与列表(as_-tible(mtcars)), 10月2日零点23分,罗纳克·沙阿


在2000年、2001年、2000年、2001年等等中到底是什么?您的函数引用了RAC1P
RAC1P
,但我在其他任何地方都看不到。如果您包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,则更容易为您提供帮助。如果您使用
list
而不是
as.list
,则代码应该可以工作。请参见
as.list(as_-tible(mtcars)、as_-tible(iris))的输出
vs
list(as_-tible(mtcars)、as_-tible(iris))
谢谢@RonakShah!这就成功了。
dfs_test <- mget(ls(pattern = '^ca_pop_\\d{4}$'))
map(dfs_test, race_ethn_tab)
list(ca_pop_2000, ca_pop_2001, .., ca_pop_2020)