循环多个环境对象 R

bod*_*a18 4 r data-manipulation dplyr janitor

我希望能够循环访问环境中的多个对象,并对每个数据帧进行一些数据清理。有没有更有效的方法可以在 1 次调用中完成我在下面所做的事情?

df1 %>%
clean_names()

df2 %>% 
clean_names()

df3 %>%
clean_names()

etc.
Run Code Online (Sandbox Code Playgroud)

Tar*_*Jae 6

基础R

library(janitor) # for clean_names function
dfs <- Filter(function(x) is(x, "data.frame"), mget(ls()))

lapply(dfs, clean_names)
Run Code Online (Sandbox Code Playgroud)

  • 虽然我经常使用`is.x`函数,但我不知道这个`is()`函数。拥有一个通用的“is()”似乎非常有用。谢谢 (2认同)

Gue*_*sBF 5

除了 akrun\xc2\xb4s 答案之外,您还可以按类过滤全局环境中的对象。\n我建议您将更新的数据帧存储在列表中,而不是全局环境中,但如果您希望可以使用list2env.

\n
library(purrr)\n\nmget(ls()) %>%\nkeep(is.data.frame) %>%\nmap(janitor::clean_names) %>%\n##(DISCLAIMER - this replaces the original data.frames in your global environment, and could be dangerous:)\nlist2env(envir = .GlobalEnv)\n
Run Code Online (Sandbox Code Playgroud)\n