结合循环与 Rbind

Combine loop with Rbind

我正在尝试执行一个通过数据帧追加的循环。我不知道如何在使用 rbind 时在循环中调用数据帧。我尝试使用 paste0 但没有用。这是一个可重现的例子:

library(metRology)

x <- c(1,2,3)
y <- c(1,2,3)

df_a_1 <- data.frame(x,y)
df_a_2 <- data.frame(x,y)

df_b_1 <- data.frame(x,y)
df_b_2 <- data.frame(x,y)

df_c_1 <- data.frame(x,y)
df_c_2 <- data.frame(x,y)

letters <- c("a", "b", "c")

#Loop
for (i in letters) {
  df_i <- rbind(paste0("df_", i "_1"), paste0("df", i, "_2"))
}

提前致谢!

假设您的数据帧存储在 R 全局环境中,您可以通过名称获取和分配变量:

library(tidyverse)

x <- c(1,2,3)
y <- c(1,2,3)

df_a_1 <- data.frame(x,y)
df_a_2 <- data.frame(x,y)

df_b_1 <- data.frame(x,y)
df_b_2 <- data.frame(x,y)

df_c_1 <- data.frame(x,y)
df_c_2 <- data.frame(x,y)

letters <- c("a", "b", "c")

for(l in letters) {
  prefix <- str_glue("df_{l}")
  res <- names(globalenv()) %>%
         keep(~ .x %>% str_detect(prefix)) %>%
         map(get) %>%
         reduce(rbind)
  assign(prefix, res)
}

df_a
#>   x y
#> 1 1 1
#> 2 2 2
#> 3 3 3
#> 4 1 1
#> 5 2 2
#> 6 3 3
df_b
#>   x y
#> 1 1 1
#> 2 2 2
#> 3 3 3
#> 4 1 1
#> 5 2 2
#> 6 3 3

reprex package (v2.0.1)

于 2021-11-10 创建