我是新的编码和做一些基因表达分析.我有一个非常天真的问题.我有几个基因表达 Dataframe 与基因名称为行和细胞名称为列Example gene exp. data frame .我想log2转换数据,但在log和log+1之间混淆.如何执行log2+1在R中对一个数组进行(log(x + 1))转换?它和log2转换是一样的吗?我应该做t=log(v+1)
吗?任何帮助都将不胜感激。
我是新的编码和做一些基因表达分析.我有一个非常天真的问题.我有几个基因表达 Dataframe 与基因名称为行和细胞名称为列Example gene exp. data frame .我想log2转换数据,但在log和log+1之间混淆.如何执行log2+1在R中对一个数组进行(log(x + 1))转换?它和log2转换是一样的吗?我应该做t=log(v+1)
吗?任何帮助都将不胜感激。
3条答案
按热度按时间laximzn51#
例如
dummy
数据字符串
如果你只想用
log2
转换数据,就像这样使用log(., base = 2)
。型
如果需要
log2(x+1)
,则需要log(dummy+1, base = 2)
,如果需要log2(x)+1
,则需要log(dummy, base = 2) + 1
egmofgnx2#
Park's answer给出了一个最简单的方法来记录转换一个只有数字的 Dataframe ,但是
log(x+1, base = b)
是一个不同的问题。log(x + 1)
但是如果转换是
y <- log(x + 1)
(可能是以2为基数),那么要注意浮点问题。对于非常小的abs(x)
值,log(x + 1, base = b)
的结果是不可靠的。字符串
这就是为什么基R有一个函数
log1p
。型
在这两种情况下,
log(x + 1)
和数值上更精确的版本之间的差异在绝对值上小于.Machine$double.eps
。型
k97glaaz3#
另一个解决方案(添加一个非数字列作为“奖励”-以防有人遇到这个问题-)可以是:
字符串