I am not sure what purpose the while loop has. However, the main problem seems to be that you need to put:
i<-sample(1:(n-40),1) #This sample from 1 to n-40 rather than i<-sample(1:n-40,1) #this samples one 1:n and then subtracts 40 Otherwise, you may get negative index values Best, Daniel bignami83 wrote: > > Hello R-universe... > > I am having trouble writing a function which contains a loop so I can > sapply() it to a list of data frames > > Each data frame has 241 observations of 15 variables. My loop takes a > random sample of one row until the 40 consecutive rows after the sample > have a d2p(variable) sum greater than 5. > > here is my loop code (it works fine when applied to a 241 observation data > frame): > > n<-241 > test<-0 > while(test<5){ > i<-sample(1:n-40,1) > x<-my.data.frame[seq(from=i, to=i+40),] > test<-sumx[,"d2p"],na.rm=TRUE) > }; i ; test > > I need this loop to be applied to EACH DATA FRAME in a list of 360 data > frames created by splitting my master data frame, d, by each fish number. > (contains observations for 360 fish, each with 241 observations of 15 > variables). > > split.df<-split(d,d$fish) > > I'm kind of new at writing functions, so I'm sure this probably doesn't > make much sense, but here is what I tried for the function: > > samp.func<-function(f) { > n<-241 > test<-0 > while(test<5){ > i<-sample(1:n-40,1) > x<-f[seq(from=i, to=i+40),] > test<-sum(x[,"d2p"],na.rm=TRUE) > }} > > and then tried to apply it to my list of data frames (NOT WORKING): > > sapply(split.df,samp.func) > > I'm pretty sure I'm missing some way to instruct that I want the loop to > cycle through for each item (data frame) in my split.df list. I've tried > to play around with including "for" loops with no avail... > > any ideas? > > > > here is code for a simplified mock single-fish data frame (i.e. one item > in my split.df list) to plug into the loop if you want to try it. > > fish<-rep(1,241) > d2p<-seq((50/241),50,(50/241)) > my.data.frame<-data.frame(fish,d2p) > > thanks!! > Sean > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list > 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. > -- View this message in context: http://r.789695.n4.nabble.com/sapply-a-loop-function-tp3737261p3737481.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list 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.