PennController for IBEX › Forums › Support › reaction time results appear in different two columns › Reply To: reaction time results appear in different two columns
Hi again,
I took a look at your results file, and it turns out I was completely wrong about the spreadsheet editor issue. Given your results file, the code I gave you indeed fails to detect columns after the 13th one, because the first CSV line (ie. non-comment line) it encounters in the file has 13 columns.
Fortunately there actually is a ready-made function from the tutorial that solves the problem: read.pcibex. So I inserted it to an adapted version of the code above, and it’s working now:
read.pcibex <- function(filepath, auto.colnames=TRUE, fun.col=function(col,cols){cols[cols==col]<-paste(col,"Ibex",sep=".");return(cols)}) { n.cols <- max(count.fields(filepath,sep=",",quote=NULL),na.rm=TRUE) if (auto.colnames){ cols <- c() con <- file(filepath, "r") while ( TRUE ) { line <- readLines(con, n = 1, warn=FALSE) if ( length(line) == 0) { break } m <- regmatches(line,regexec("^# (\\d+)\\. (.+)\\.$",line))[[1]] if (length(m) == 3) { index <- as.numeric(m[2]) value <- m[3] if (index < length(cols)){ cols <- c() } if (is.function(fun.col)){ cols <- fun.col(value,cols) } cols[index] <- value if (index == n.cols){ break } } } close(con) return(read.csv(filepath, comment.char="#", header=FALSE, col.names=cols)) } else{ return(read.csv(filepath, comment.char="#", header=FALSE, col.names=seq(1:n.cols))) } } # First read the results file all_results <- read.pcibex("resultsf") # We'll work on the DashedSentence lines only dashed_results <- all_results # Keep only the DashedSentence lines dashed_results <- subset(dashed_results, PennElementType=="Controller-DashedSentence") # Let us first make the columns character-based instead of factors cols.num <- seq(13,21) dashed_results[cols.num] <- sapply(dashed_results[cols.num],as.character) # Now we'll move the columns for the short lines (the ones without extra1 and extra2) short_lines <- dashed_results$Comments=="" # Now let's move the columns wrong.cols <- seq(13,16) empty.cols <- seq(18,21) dashed_results[short_lines,empty.cols] <- dashed_results[short_lines,wrong.cols] dashed_results[short_lines,wrong.cols] <- NA # Done!
Sorry for overlooking this problem, I shouldn’t have insisted it came from an editing process when you were clearly just following my advice
Let me know if you have any questions
Jeremy