Applying a function to a matrix
2
0
Entering edit mode
6.5 years ago
Za ▴ 140

Hi, I have a matrix in which my columns are my samples and rows my genes. How I can write a function in R so that each value in this matrix be e^value?? I mean anti natural log of the values inside this matrix. Whatever I am googling I failed especially I am not allowed to ask in stack overflow.

R RNA-Seq • 1.4k views
ADD COMMENT
2
Entering edit mode
6.5 years ago

Wait, on which scale are your values currently? Already logged or not?

You literally just want e^value? Then, that's just

2.71828182846^datamatrix

...or

exp(datamatrix)
ADD COMMENT
0
Entering edit mode

Data is already natural log transformed. I want anti natural log

ADD REPLY
1
Entering edit mode

If they are the natural logged values, then, yes, just use either of:

2.71828182846^datamatrix

exp(datamatrix)

Then, they will be back on the scale they were before natural log transformation, i.e., anti natural log.

Testing:

2.71828182846^log(2)
[1] 2

exp(log(2))
[1] 2
ADD REPLY
1
Entering edit mode
6.5 years ago

Reversing a log is called exponentiation. To apply a function to every cell of a matrix, you can use the apply() function specifying both rows and columns in the margin parameter. The example below reverses the log2 transformation used for example in microarray data:

 exponentiated.data <- apply(log.data, 1:2, function(x) { 2^x})
ADD COMMENT
3
Entering edit mode

Umm, 2^log.data is a bit simpler. Of course since OP wants the natural log exp(log.data) would be the equivalent.

ADD REPLY
1
Entering edit mode

Absolutely no reason to use apply in this case, simple 2^log.data is about 200x faster. (Tested with 1000 by 1000 matrix).

ADD REPLY
0
Entering edit mode

Sorry, for example in my natural log transformed matrix for a gene I have 0.0264033375579175, by your function e^x if e= 2.718281828459, now I have 1.026760. Is it right?

ADD REPLY
1
Entering edit mode

Yes / Sim / Sea / Oui / Si

ADD REPLY

Login before adding your answer.

Traffic: 1191 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6