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.