Evidently, you want your loop to create new data frames, named (in this example)
  df_selected1
  df_selected2
  df_selected3

Yes, it can be done. But to do it you will have to use the get() and assign() 
functions, and construct the data frame names as character strings. Syntax like
    df_bs_id[3]
does not give you df_bs_id3.

R experts typically discourage this kind of approach. A method more consistent 
with how R is designed to work would be to store the data frames as elements of 
a list.

dflst <- list(df_bs_id1, df_bs_id2, df_bs_id3)
nframes <- length(dflist)
newdf <- dflst

for (id in seq(nframes)) {
   newdf[id] <- dflst[[ id ]][ , c("column1", "column2")]  
}

Optionally, you could name the list elements:
 
    names(dflst) <- paste0('df_selected', seq(nframes))

After which you would have the original data frames as elements of dflst, and 
the processed data frames as elements of newdf. The loop can be simplified a 
bit if you don't need to keep copies of the original data frames.

With this approach, it would be better create dflst using a loop over the 
incoming file names, running read.csv() inside the loop. In which case you 
would never create separate data frames df_bs_id1, df_bs_id2, etc.

I have used both approaches at various times over the years, and each has pros 
and cons. In general, I would recommend the list approach, however, especially 
if you have a large number of files to process.

-Don

--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
Lab cell 925-724-7509
 
 
On 5/10/18, 7:33 AM, "R-help on behalf of Marcelo Mariano Silva" 
<r-help-boun...@r-project.org on behalf of marcelomarianosi...@gmail.com> wrote:

    Hi,
    
    Is it possible use a loop to process many data frames in the same way?
    
    For example, if I have three data frames, all with same variables
    
    
    df_bs_id1 <- read.csv("test1.csv",header =TRUE)
    df_bs_id2 <- read.csv("test2.csv",header =TRUE)
    df_bs_id3 <- read.csv("test3.csv",header =TRUE)
    
    
    How could I would implement a code loop that , for instance, would select
    two coluns of interest in a fashion of the code below ?
    
    
    # selecting only 2 columns of interest
    
    for (1, 1:3) {
    df_selected [i] <- df_bs_id[i]  [ , c("column1", "column2")]  }
    
    
    Tks
    
    MMS
    
        [[alternative HTML version deleted]]
    
    ______________________________________________
    R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
    https://stat.ethz.ch/mailman/listinfo/r-help
    PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
    and provide commented, minimal, self-contained, reproducible code.
    

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to