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

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

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

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