Very helpful

Thanks,
Naresh

Sent from my iPhone

> On May 19, 2026, at 11:34 AM, Rui Barradas <[email protected]> wrote:
> 
> À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.

Reply via email to