You'll need to tell us what class you time variable is in, e.g. the output of str(AB), but the following might work:
for (i in unique(as.character(AB$time)) { Intervall <- AB[as.character(AB$time) ==i, ] ... } Depending on the format, as.numeric( ) might work too. Regards Mikkel On Saturday, October 12, 2013 12:16 PM, anna berg <anna.berg1...@hotmail.com> wrote: Dear R users, I am pretty new to programming in R. So I guess there is some obvious mistake I am making. I hope you can help me. I have a data frame that looks like this: > AB time x y z gene part 1 03:27:58 1 2 3 grom 1 2 03:27:58 2 3 4 grom 1 3 03:27:58 3 4 5 grom 1 4 04:44:23 12 13 14 grom 2 5 04:44:23 13 14 15 grom 2 6 04:44:23 14 15 16 grom 2 7 04:44:23 15 16 17 grom 2 8 06:23:45 101 102 103 vir 3 9 06:23:45 102 103 104 vir 3 10 06:23:45 103 104 105 vir 3 Now I want to apply a loop (here a simplified version; I know that I could do this easily with tapply, but for the other things that I want to do with the loop (e.g. weighted mean of time series after fast fourier transformation) I would rather like to use a loop). Note that "time" and "part" are actually the same, just one is a factor and the the other is a number. Here is the loop that works fine and returns the result as I want (the important part here is: Intervall <- AB[AB$part==i,]): for(i in 1:length(unique(AB$time))) { Intervall <- AB[AB$part==i,] attach(Intervall) # Standart deviation sdx <-sd(x) sdy <-sd(y) sdz <-sd(z) # Add Behavior gene <- as.character(Intervall[1,5]) # Construct a table tab <-c(sdx, sdy, sdz, gene) write(tab, file=paste("VariableTable.txt", sep=""), ncolumns=4,sep=",", append=TRUE) detach(Intervall) } # end of for loop The result looks like this and is fine: 1,1,1,grom 1.3,1.3,1.3,grom 1,1,1,vir My problem is, that I used the "part" column only to run the loop, but I actually want to use the time column to run the loop. But when I replace Intervall <- AB[AB$part==i,] with Intervall <- AB[AB$time==i,] then the resulting table only contains NA. I also tried to use Intervall <- AB[x==i,] x <- as.factor(AB$part) --> which works fine as well x <- as.factor(AB$time) --> which returns only NA x <- unique(AB$time) ---> which returns only NA x <- levels(unique(AB$time) --> which returns only NA x <- seq(unique(AB$time) ---> which returns the standard deviation of the entire column (not the single parts) What do I do wrong? And how can i fix it? Thank you so much in advance. Kind regards, Anna [[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. [[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.