Às 11:48 de 19/05/2026, Naresh Gurbuxani escreveu:
I want to stack several dataframes using their names as strings.
df1 <- data.frame(name = "normal", x = rnorm(5))
df2 <- data.frame(name = "uniform", x = runif(5))
df3 <- data.frame(name = "binomial", x = rbinom(5, 2, 0.5))
mynames <- c("df1", "df2", "df3")
newdf <- some_function(mynames)
# Desired result
newdf <- do.call(rbind, list(df1, df2, df3))
How can this be done?
Thanks,
Naresh
______________________________________________
[email protected] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Hello,
Something like this?
fun <- function(df_names, pattern, envir = .GlobalEnv) {
if(missing(df_names)) {
if(missing(pattern)) {
obj_names <- ls(envir = envir)
df_list <- Filter(\(x) is(x, "data.frame"), mget(obj_names, envir
= envir))
} else {
df_names <- ls(pattern = pattern, envir = envir)
df_list <- mget(df_names, envir = envir)
}
} else df_list <- mget(df_names, envir = envir)
res <- do.call(rbind, df_list)
row.names(res) <- NULL
res
}
df1 <- data.frame(name = "normal", x = rnorm(5))
df2 <- data.frame(name = "uniform", x = runif(5))
df3 <- data.frame(name = "binomial", x = rbinom(5, 2, 0.5))
mynames <- c("df1", "df2", "df3")
fun()
fun(mynames)
fun(pattern = "df")
Hope this helps,
Rui Barradas
______________________________________________
[email protected] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.