[R] Replace NaN with value from the same row

Jeff Newmiller jdnewmil at dcn.davis.CA.us
Sun Oct 18 21:26:08 CEST 2015


Please reply to all so the answers are seen on the mailing list, where my mistakes can be corrected and others can learn from any valid answers I manage to provide.

I warned you that df is the name of a common function. I used the name of the variable that you referred to in your question, which had hidden the common function called df. I would guess that you have not re-created the variables in R as you had them defined before.

To keep your mind clear on what R is thinking, learn to use the ls and str functions. Read about them using the help system:

?ls
?str

I think that

str(df)

tells you that df is a function, rather than a data.frame. If you create a variable called df like so:

df <- data.frame( test=5 )

or using any other function that gives you a data frame such as read.csv, then the df function in the base stats package will be hidden and

str(df)

will give you a different result.

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
--------------------------------------------------------------------------- 
Sent from my phone. Please excuse my brevity.

On October 18, 2015 11:29:51 AM PDT, Jonathan Reardon <jonathanreardon at outlook.com> wrote:
>How do i send an email in plain text format and not HTML?
>I tried:
>idx <- is.na( df$mean )
>df[ idx, "mean" ] <- df[ idx, "offset" ]
>I got the error message:
>In is.na(df$mean) : is.na() applied to non-(list or vector) of type
>'NULL'
>Jon
>
>> Subject: Re: [R] Replace NaN with value from the same row
>> From: jdnewmil at dcn.davis.CA.us
>> Date: Sun, 18 Oct 2015 11:06:44 -0700
>> To: jonathanreardon at outlook.com; r-help at r-project.org
>> 
>> Next time send your email using plain text format rather than HTML so
>we see what you saw.
>> 
>> Try 
>> 
>> idx <- is.na( df$mean )
>> df[ idx, "mean" ] <- df[ idx, "offset" ]
>> 
>> BTW there is a commonly-used function called df, so you might improve
>clarity by using DF for your temporary data frame name.
>>
>---------------------------------------------------------------------------
>> Jeff Newmiller                        The     .....       .....  Go
>Live...
>> DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live
>Go...
>>                                       Live:   OO#.. Dead: OO#.. 
>Playing
>> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
>> /Software/Embedded Controllers)               .OO#.       .OO#. 
>rocks...1k
>>
>---------------------------------------------------------------------------
>
>> Sent from my phone. Please excuse my brevity.
>> 
>> On October 18, 2015 10:48:14 AM PDT, Jonathan Reardon
><jonathanreardon at outlook.com> wrote:
>> >Hi everyone,
>> >A simple question, but i cannot figure this out.
>> >
>> >I have a data-frame with 4 columns (onset, offset, outcome, mean):
>> >onset offset outcome   mean8   72071  72503       1  7244615 142598
>> >143030       1    NaN30 293729 294161       1 294080
>> >For each 'NaN' in the mean column, i want to replace that NaN with
>the
>> >'offset' value in the same row.
>> >Intended outcome: 
>> >onset offset outcome   mean8   72071  72503       1  7244615 142598
>> >143030       1    14303030 293729 294161       1 294080
>> >I have tried:
>> > df$mean <- replace(df$mean, is.na(df$mean), df$offset)
>> >but i get the error message: 'number of items to replace is not a
>> >multiple of replacement length'. I'm assuming because this is trying
>to
>> >insert the whole 'offset' column into my one NaN cell. Is this a
>> >correct interpretation of the error message?
>> >Can anyone tell me how to replace any mean row NaN's  with the
>offset
>> >value from that very same row?
>> >I don't want to use any pasting etc as this needs to be used as part
>of
>> >a function working over a large dataset than the one shown here.
>> >Cheers
>> >Jonathan 		 	   		  
>> >	[[alternative HTML version deleted]]
>> >
>> >______________________________________________
>> >R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> >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.
>> 
>



More information about the R-help mailing list