Andrew Hicks
Andrew Hicks

Reputation: 662

Is there a way to simplify this code using a loop?

Is there a way to simplify this code using a loop?

VariableList <- c(v0,v1,v2, ... etc)

National_DF <- df[,VariableList]
AL_DF <- AL[,VariableList]
AR_DF <- AR[,VariableList]
AZ_DF <- AZ[,VariableList]
... etc

I want the end result to have each as a data frame since it will be used later in the model. Each state such as 'AL', 'AR', 'AZ', etc are data frames. The v{#} represents an out of place variable from the RAW data frame. This is meant to restructure the fields, while eliminating some fields, for preparation for model use.

Upvotes: 0

Views: 39

Answers (1)

Ronak Shah
Ronak Shah

Reputation: 389175

Continuing the answer from your previous question, we can arrange the data in the same lapply call before creating dataframes.

VariableList <- c('v0','v1','v2')

data <- unlist(lapply(mget(ls(pattern = '_DF$')), function(df) {
    index <- sample(1:nrow(df), 0.7*nrow(df))
    df <- df[, VariableList]
    list(train = df[index,], test = df[-index,])  
}), recursive = FALSE)

Then get data in global environment :

list2env(data, .GlobalEnv)

Upvotes: 2

Related Questions