结合循环与 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 创建
我正在尝试执行一个通过数据帧追加的循环。我不知道如何在使用 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 创建