如何在for循环(R语言)中使用数据帧名称作为var的输入?
在R中,我定义了以下函数:如何在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
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年等等中到底是什么?您的函数引用了RAC1PRAC1P
,但我在其他任何地方都看不到。如果您包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,则更容易为您提供帮助。如果您使用list
而不是as.list
,则代码应该可以工作。请参见as.list(as_-tible(mtcars)、as_-tible(iris))的输出
vslist(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)