[R] Modifying dataframe with mutate()

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Sun Jul 26 03:56:14 CEST 2020


> I was thrown off by the fact that after mutating it looked like the column data type had been changed. 

It was changed... in a new copy of the data frame that, because it was at the top-level interactive prompt and not being saved, was printed and then discarded.

On July 25, 2020 5:11:03 PM PDT, H <agents using meddatainc.com> wrote:
>On 07/25/2020 04:17 PM, Jeff Newmiller wrote:
>> False. Mutate is similar in structure to the base function `within`.
>Which is why you have to assign the altered data frame back onto
>itself.
>>
>> On July 25, 2020 12:59:06 PM PDT, "Patrick (Malone Quantitative)"
><malone using malonequantitative.com> wrote:
>>> Jeff,
>>>
>>> mutate(), which is I think part of dplyr, also violates this, for
>what
>>> it's
>>> worth. I suspect the breaking point is that mutate() is intended to
>>> create
>>> new columns in the dataframe, not alter existing ones.
>>>
>>> On Sat, Jul 25, 2020 at 3:52 PM Jeff Newmiller
>>> <jdnewmil using dcn.davis.ca.us>
>>> wrote:
>>>
>>>> R is largely a functional language. You do something to an input
>and
>>> end
>>>> up with an output that has no effect on the input. This is actually
>a
>>>> highly desirable feature.
>>>>
>>>> If you want your df variable to reflect changes made then you  need
>>> to
>>>> assign your result back into it.
>>>>
>>>> df <- df %>% mutate(v1 = as.double(v1))
>>>>
>>>> (Note that the data.table package violates this principle and is
>>>> controversial as a result.)
>>>>
>>>> On July 25, 2020 12:11:24 PM PDT, H <agents using meddatainc.com> wrote:
>>>>> In a statement like:
>>>>>
>>>>> df %>% mutate(v1 = as.double(v1))
>>>>>
>>>>> I expect the variable v1 in dataframe df to have been converted
>into
>>> a
>>>>> double. However, when I do:
>>>>>
>>>>> str(df)
>>>>>
>>>>> v1 still shows as int. Do I need to save the modified dataframe
>>> after
>>>>> mutating a variable?
>>>>>
>>>>> ______________________________________________
>>>>> R-help using 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.
>>>> --
>>>> Sent from my phone. Please excuse my brevity.
>>>>
>>>> ______________________________________________
>>>> R-help using 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.
>>>>
>Thank you, code corrected and problem solved. I was thrown off by the
>fact that after mutating it looked like the column data type had been
>changed. I also tried mutate_at() which similarly failed...
>
>______________________________________________
>R-help using 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.

-- 
Sent from my phone. Please excuse my brevity.



More information about the R-help mailing list