[R] how to do inverse log of every value in every column in data frame
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Thu Oct 14 20:18:53 CEST 2021
Hello,
The answer is given but there is no need to coerce to matrix first, as
long as the columns are numeric.
From ?exp, right at the beginning of section Details:
Details
All except logb are generic functions: methods can be defined for them
individually or via the Math group generic.
Follow the link Math:
Details
There are four groups for which S3 methods can be written, namely the
"Math", "Ops", "Summary" and "Complex" groups. These are not R objects
in base R, but methods can be supplied for them and base R contains
factor, data.frame and difftime methods for the first three groups.
And exp is the group "Math", 2nd bullet.
class(mtcars)
#[1] "data.frame"
exp(mtcars)
# output omitted
But if a column is not numeric the method Math.data.frame throws an error.
exp(iris)
#Error in Math.data.frame(iris) :
# non-numeric-alike variable(s) in data frame: Species
exp(iris[-5]) # remove the offending column
# output omitted
Hope this helps,
Rui Barradas
Às 18:23 de 14/10/21, Ana Marija escreveu:
> Thank you so much!
>
> On Thu, Oct 14, 2021 at 12:17 PM Bert Gunter <bgunter.4567 using gmail.com> wrote:
>
>> As all of your columns are numeric, you should probably convert your df to
>> a matrix. Then use exp() on that, of course:
>> exp(as.matrix(b))
>>
>> see ?exp
>>
>> Bert Gunter
>>
>> "The trouble with having an open mind is that people keep coming along and
>> sticking things into it."
>> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>>
>>
>> On Thu, Oct 14, 2021 at 10:10 AM Ana Marija <sokovic.anamarija using gmail.com>
>> wrote:
>>
>>> Hi All,
>>>
>>> I have a data frame like this:
>>>
>>>> head(b)
>>> LRET02 LRET04 LRET06 LRET08 LRET10 LRET12 LRET14
>>> 1 0 0.6931472 . 1.0986123 1.0986123 1.0986123 0.6931472
>>> 2 2.1972246 2.4849066 2.4849066 . 2.5649494 2.6390573 2.6390573
>>> 3 1.6094379 1.7917595 1.6094379 1.7917595 2.0794415 1.9459101 2.0794415
>>> 4 0 0 0 0 0 0 0
>>> 5 0.6931472 0 1.0986123 1.0986123 0.6931472 0.6931472 0.6931472
>>> 6 1.0986123 1.0986123 1.0986123 0.6931472 1.0986123 1.3862944 1.0986123
>>>
>>> All values in this data frame are product of natural log. I have to do
>>> inverse of it.
>>> So for example do do inverse of 0.6931472 I would do:
>>>> 2.718281828^0.6931472
>>> [1] 2
>>>
>>> How do I perform this operation for every single value in this data frame?
>>>
>>> The original data frame is this dimension:
>>>> dim(b)
>>> [1] 1441 18
>>>
>>> Thanks
>>> Ana
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> 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.
>>>
>>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>
More information about the R-help
mailing list