r - subseting in a for loop -


my dataset has 34,000 rows , 353 columns. 1 column location , has 11,000 unique values. want subset dataset within loop. can creating new data frame each subset, want subsets form single data frame. have included sample dataset below

structure(list(x = structure(c(1l, 1l, 1l, 1l, 3l, 3l, 3l, 2l,  3l), .label = c("car", "dog", "house"), class = "factor"), y = c(20l,  20l, 20l, 20l, 410l, 410l, 410l, 410l, 60l), z = structure(c(1l,  3l, 8l, 1l, 7l, 5l, 2l, 4l, 6l), .label = c("argentina", "berlin germany",  "buenos aires argentina", "dublin ireland", "from austria", "germany",  "in transit germany", "river plate argentina"), class = "factor"),  k = structure(c(1l, 1l, 1l, 1l, 1l, 1l, 1l, 1l, 1l), .label = "a", class = "factor")), .names = c("x", "y", "z", "k"), class = "data.frame", row.names = c(na, -9l)) 

i can use following code create new data frames

 l=c("argentina","ireland") for(i in l){      assign(paste("newdata",i,sep=""),      subset(testl[which(grepl(i,testl$z)&      !grepl("in transit",testl$z)&!grepl("from",testl$z)),],       select=c("x","y","z")))} 

however want create single new dataframe hold subsets. have tried following code

d<-data.frame() for(i in l){d<-rbind(d,c( subset(testl[which(grepl(i,testl$z) & !grepl("in transit",testl$z) & !grepl("from",testl$z)),],     select=c("x","y","z")))} 

i following errors

warning messages: 1: in `[<-.factor`(`*tmp*`, ri, value = "dog") : invalid factor level, na generated 2: in `[<-.factor`(`*tmp*`, ri, value = "dublin ireland") : invalid factor level, na generated 

i have attempted convert factors characters no success. appreciated

i think making life rather difficult using assign here , trying store subsets in separate data frames. try more this:

l <- c("argentina","ireland") res <- setnames(vector("list",length(l)),l)  (i in seq_along(l)){                      res[[i]] <- dat[grepl(l[i],dat$z) & !grepl("in transit",dat$z) & !grepl("from",dat$z),c("x","y","z")] }  > res $argentina     x  y                      z 1 car 20              argentina 2 car 20 buenos aires argentina 3 car 20  river plate argentina 4 car 20              argentina  $ireland     x   y              z 8 dog 410 dublin ireland   > do.call("rbind",res)               x   y                      z argentina.1 car  20              argentina argentina.2 car  20 buenos aires argentina argentina.3 car  20  river plate argentina argentina.4 car  20              argentina ireland     dog 410         dublin ireland 

Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -