Hi, I'm trying to execute the same R code on multiple data frames listed in a single directory. The code works fine if I use the code (below) for each file. However, I have several files and it becomes tedious to run each one, name it and then aggregate into a single dataframe.
Name 0.0 1 21.15 2 2400.26 1 3222.14 2 name = read.table(file.choose(),header=F) # opening a data file colnames(name)<-c("Time", "Behavior") name = data.frame(name$Behavior, name$Time) colnames(name)<-c("Behavior", "Time") name<-name[name$Time < 3600, ]; x<-seq(0,3600, by = 60) # total time partition by time which is 60 if (tail(name$Behavior, 1) == 1) {name<-rbind(name, c(4, 3600))} else {name<-rbind(name, c(1, 3600))} if (((length(name$Behavior))) %% 2 != 0) {name <-name[-c(length(name$Behavior)), -c(length(name$Behavior))]} q<-c() for (y in (1: (length(name$Behavior)))) { if (y %% 2 == 0) {next} else {q<-c(q, (c(name$Time[y]:name$Time[y +1])))} } b<-table(cut(q,x)) sum(b) So, I tried to nest a for loop within another(code below). It solved the problem of selecting each data file. However, a problem was incurred with the second loop. It gave back a crazy matrix. setwd("/Users/deliashelton/Documents/Shelton back-up 11:21/labs/ABL meetings/DS7 Flow/DS7.5/Observers/AA 7.5/AA PND2/AA PND 2 22C") a<- list.files() xx<- c() t<-seq(0,3600, by = 60) for (i in a){ name<- read.table(i,header=F) colnames(name)=c("Time", "Behavior") name<- data.frame(name$Behavior, name$Time) colnames(name)<-c("Behavior", "Time") name<-name[name$Time < 3600, ] if (tail(name$Behavior, 1) == 1) {name<-rbind(name, c(4, 3600))} else {name<-rbind(name, c(1, 3600))} if (((length(name$Behavior))) %% 2 != 0) {name <-name[-c(length(name$Behavior)), -c(length(name$Behavior))]} #xx <- rbind(xx, name) # total time partition by time which is 60 q<-c() for (y in (1: (length(name$Behavior)))) { if (y %% 2 == 0) {next} else {q<-c(q, (c(name$Time[y]:name$Time[y +1])))} } b<-table(cut(q,x)) xx <- rbind(xx, sum(b)) print(xx) } Crazy matrix: [,1] [1,] 4947 [,1] [1,] 4947 [2,] 7318 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [6,] 13762 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [6,] 13762 [7,] 17363 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [6,] 13762 [7,] 17363 [8,] 19857 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [6,] 13762 [7,] 17363 [8,] 19857 [9,] 23372 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [6,] 13762 [7,] 17363 [8,] 19857 [9,] 23372 [10,] 25509 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [6,] 13762 [7,] 17363 [8,] 19857 [9,] 23372 [10,] 25509 [11,] 28071 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [6,] 13762 [7,] 17363 [8,] 19857 [9,] 23372 [10,] 25509 [11,] 28071 [12,] 31672 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [6,] 13762 [7,] 17363 [8,] 19857 [9,] 23372 [10,] 25509 [11,] 28071 [12,] 31672 [13,] 35268 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [6,] 13762 [7,] 17363 [8,] 19857 [9,] 23372 [10,] 25509 [11,] 28071 [12,] 31672 [13,] 35268 [14,] 38440 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [6,] 13762 [7,] 17363 [8,] 19857 [9,] 23372 [10,] 25509 [11,] 28071 [12,] 31672 [13,] 35268 [14,] 38440 [15,] 41796 [,1] [1,] 4947 [2,] 7318 [3,] 8598 [4,] 9617 [5,] 11755 [6,] 13762 [7,] 17363 [8,] 19857 [9,] 23372 [10,] 25509 [11,] 28071 [12,] 31672 [13,] 35268 [14,] 38440 [15,] 41796 [16,] 43142 What I would like is for a recursive function/loop that follows the initial codes computation, but does it for all data files in the directory and binds the outputs into a single vector. If you have any tips on getting the code to work or can help identify the problem, your assistance would be appreciated. [[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.