[R] Re place only first NA in column

Steve Lianoglou mailinglist.honeypot at gmail.com
Tue Nov 3 22:09:12 CET 2009


Hi,

On Nov 3, 2009, at 3:58 PM, bikemike42 wrote:

>
> Dear All,
>
> I am trying to fill in a blank vector ("a") with one value at a  
> time, with
> the value of the number of rows in a randomized dataset with  
> rowSums=0.
> Below is the code I've got so far, but what I want to be as the last  
> line is
> " a[1st NA,]=nz"
> such that this will run until all of my NAs are replaced with an  
> integer
> value based on randomizations.
>
> a<-matrix(nrow=1000,ncol=1)
> while(sum(is.na(a)>0))
> 	{
> 	z<-matrix(rbinom(832, 1, prob = 0.048), nrow = 32)
> 	rs<-rowSums(z)
> 	nz<-length(rs[rs==0])
> 	a[,]=nz
> 		
> }
>
> Thank you for your help!

It's not really clear to me what you want to actually replace each NA  
value with. But it sounds like your 'general' question is how to find  
the index of the first value of a vector that is NA.

Let's say your `a` vector has NA values you want to replace, one by one.

any.na <- any(is.na(a))
while (any.na) {
   first.na <- which(is.na(a))[1]
   a[first.na] <- your.NA.replacing.function()
   any.na <- any(is.na(a))
}

HTH,
-steve

--
Steve Lianoglou
Graduate Student: Computational Systems Biology
   |  Memorial Sloan-Kettering Cancer Center
   |  Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact




More information about the R-help mailing list