用于循环以在R中转换名称

问题描述 投票:0回答:1

我正在尝试使用循环c(“ 2000”,“ 2001”,...,“ 2011”)重写以下代码。每个数据帧包括变量“ emp_01”,“ emp_02”等等。为了区分这些变量,我想使用后缀“ emp_01.2000”,“ emp_02.2000”并转换“ fips”进行合并。您能告诉我在这种情况下如何编写for循环吗?

colnames(df_2000) <- paste(colnames(df_2000), "2000", sep = ".")
df_2000  <-  df_2000 %>%
   rename(fips = fips.2000)
colnames(df_2001) <- paste(colnames(df_2001), "2001", sep = ".")
df_2001  <-  df_2001 %>%
   rename(fips = fips.2001)
...
r for-loop paste
1个回答
0
投票

我们可以使用mget来获取list中的对象,然后更改值

library(dplyr)
library(purrr)
library(stringr)
lst1 <- mget(ls(pattern = '^df_\\d{4}$')) %>%
       map(~ .x %>%
          rename_at(vars(starts_with('fips')), ~ str_remove(., '\\.\\d{4}$'))) 

最好将对象保留在列表中,而不要更新原始对象。但是,如果我们需要

list2env(lst1, .GlobalEnv)
© www.soinside.com 2019 - 2024. All rights reserved.