Hi r-help-boun...@r-project.org napsal dne 06.01.2009 02:29:18:
> Hello - > > kayj wrote: > > > > Hi all > > > > I have a data set with the total number of columns =ncol, and the total > > number of rows=nrow. I am trying to loop over the values and id the value is > > less than or equal to 100 to be changed to 1. if the value is greater than > > 100 , to be changed to 0. if NA , let X[i,j]=NA. I ran into a problem where > > if one row in my data set had all values =NA, then the program does not > > continue working past that row! > > > > At some point I get the following error message: > > > > “Error in if (data [i, j] <= 100) { : missing value where TRUE/FALSE needed” > > > > Here is the program > > > > data<-read.table("fileName.txt", header=F, sep='\t') > > > > X=data > > for(i in ncol) > > { > > for(j in nrow) > > { > > if(data[i,j]<=100) {X[i,j]=1} > > if(data[i,j]>100) {X[i,j]=0} > > > > if(is.na(data[i,j])) {X[i,j]=NA} > > } > > } > > > An alternate, vectorized solution may be: > > X <- ifelse(data <= 100, 1, 0) Another one X <-(da<=100)*1 Logical vectors can be treated like numeric with TRUE=1 and FALSE=0, I learned that somewhere but it is not mentioned in help page for ?logical so it is not so easy to find. Regards Petr > > And as 'data' is a function in the utils package include with R, you > might consider not naming your variables 'data'. > > ______________________________________________ > 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. ______________________________________________ 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.