Hello-

I have a script which steps through a series of subjects, and for the 
subjects I remove outlying values. After removing these outliers, I 
specify a cutoff, keeping only values over a certain value (e.g., 1.96). 
I want to populate a matrix with a statistic of the values that make the 
cutoff (for example, the mean). However, in some subjects, after 
outliers and the cutoff are specified, there are no data that meet the 
criteria (I get <0 rows> (or 0-length row.names)). Here the script dies.

The solution I think is to specify a break so that the matrix will be 
populated with a value (such as NA) and it will move on to the next 
subject in the loop. However, I haven't been able to figure this out. If 
anyone has any suggestions I would very much appreciate them. I have 
paster part of the script below up to the point where it dies.

Thanks.

for (ss in levels(ss.list)) {
        print(ss)
        ss.count = ss.count + 1  
        query.string <- paste("SELECT * FROM ",ss,";",sep="")
        #print(query.string)
        data_gcs <- dbGetQuery(con, query.string)
        attach(data_gcs)
        names(data_gcs)
        mat_row = 0
            for(i in levels(roi.list)){
            print (i)
            current.roi <- data_gcs[data_gcs$ROI==i,]
            current.roi.plus.z <- data.frame(current.roi, 
scale(current.roi[,15]), scale(current.roi[,18]), 
scale(current.roi[,21]), scale(current.roi[,24]))
            testextrem <- function(x) {if ((abs(x[1]) < 2.5) & 
(abs(x[2]) < 2.5) & (abs(x[3]) < 2.5) & (abs(x[4]) < 2.5)) return(1) 
else return(0)}
            filtervector <- apply(as.vector(current.roi.plus.z[,c(27, 
28, 29, 30)]), 1, FUN=testextrem)
            current.roi.plus.z.filter <- data.frame(current.roi.plus.z, 
filtervector)
            final.roi.df <- 
current.roi.plus.z.filter[which(current.roi.plus.z.filter$filtervector==1),]
            #print (final.roi.df)
            kicked.out<-(length(filtervector) - 
sum(filtervector))/length(filtervector)
            print(kicked.out)
            matrix.col = matrix.col + 1
            attach(final.roi.df)
            names(final.roi.df)
            print(matrix.col)
            #set cutoff for FDR. per voxel p values (of Z dist) .05 = 
1.96, .01 = 2.575, .001 = 3.277, .005 = 3.479 BE SURE TO CHANGE THE 
VARIABLE EACH TIME YOU CHANGE CONDITION
               pre.outliers<-subset(final.roi.df, gFDR4FWHM >= 1.96)
               detach(final.roi.df)
               attach(pre.outliers)
               outliers<-subset(pre.outliers, gtvalue4FWHM >= 0.00)
...and the script dies here because there are no data in "outliers".

-- 
Anthony Steven Dick, Ph.D.
Post-Doctoral Scholar
Human Neuroscience Laboratory
Biological Sciences Division
University of Chicago
5841 S. Maryland Ave. MC-2030
Chicago, IL 60637
Phone: (773)-834-7770
Email: [EMAIL PROTECTED]
Alternate email: [EMAIL PROTECTED]

______________________________________________
[email protected] 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.

Reply via email to