trial_time<- function(list_asc= "data/raw/files.txt",
maxtrial=24){
# required function:
trial_info<- function(file, maxtrial, data){ # extracts information for processing trials
### get trial names:
ID<- which(grepl('TRIALID', file));
trial_text<- file[ID]
trials<- substr(trial_text, unlist(gregexpr(pattern =' ',trial_text[1]))[2]+1, nchar(trial_text))
#trials<- trials[which(letter!="P" & letter!="F")] # remove practice items and questions
trials<- gsub(" ", "", trials)
# sometimes there is an extra empty space that can mess up detection of duplicates
### get condition:
I<- unlist(gregexpr(pattern ='I',trials)) # start of item info
cond<- as.numeric(substr(trials, 2, I-1)) # extract condition number
### get item:
D<- unlist(gregexpr(pattern ='D',trials)) # start of dependent info
item<- as.numeric(substr(trials, I+1, D-1)) # extract condition number
depend<- as.numeric(substr(trials, nchar(trials), nchar(trials)))
### get sequence:
#seq<- 1:length(trials)
### get start & end times
start<- which(grepl('DISPLAY ON', file))
end <- which(grepl('DISPLAY OFF', file))
duplicated<- trials[duplicated(trials)]
if(length(duplicated)>0){ # if there were aborted trials..
message(paste(" Diplicated trial", duplicated, "for file:", data, "\n"))
message("Analysing only last attempt at the trial!")
toBeRemoved<- NULL
for(i in 1:length(duplicated)){
dup_rem<- which(trials==duplicated[i])
for(j in 1:length(dup_rem)){
if(j!=length(dup_rem)){
toBeRemoved[length(toBeRemoved)+1]= dup_rem[j]
}
} # end of j
} # end of i
#start<- start[-toBeRemoved]
# end<- end[-toBeRemoved]
cond<- cond[-toBeRemoved]
item<- item[-toBeRemoved]
# seq<- seq[-toBeRemoved]
depend<- depend[-toBeRemoved]
ID<- ID[-toBeRemoved]
} # end of aborted conditional
trial_db<- data.frame(cond, item, depend, start, end, ID)
trial_db<- subset(trial_db, depend==0 & item< maxtrial+1)
trial_db$seq<- 1:nrow(trial_db)
###
# trials<- trials[which(!is.element(trials, duplicated))]
return(trial_db)
}
asc<- readLines(list_asc, warn= F)
time<- NULL
for(i in 1:length(asc)){
cat("\n") ;cat("Processing data for subject... "); cat(paste(i, " ", sep="")); cat("\n")
cat(sprintf("Loading data file: %s", asc[i]))
dataF<- readLines(asc[i]) # load asc file;
cat(". Done")
trial_db<- trial_info(dataF, maxtrial, asc[i]) # get info about trials
temp_time<- trial_db[,-c(3,6)]
temp_time$sub<- i
# temp_time<- temp_time[,c(1,2,5,3,4,6)]
temp_time$dur<- temp_time$end- temp_time$start
time<- rbind(time, temp_time)
}
return(time)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.