FPKM转为TPM时报错Error in log(fpkm) : non-numeric argument to mathematical function

#-----------FPKM变为TPM
>
#参考https://cloud.tencent.com/developer/article/1669450
FPKM2TPM <- function(fpkm){
  exp(log(fpkm) - log(sum(fpkm)) + log(1e6))}

>M_NM_TPM<- apply(M_NM_fpkm[,1:6],1,FPKM2TPM)

Error in log(fpkm) : non-numeric argument to mathematical function

报错原因log(fpkm)中fpkm值不能为0,如果M_NM_ftkm数据框中有值为0,则会报错
log(fpkm)中的值需要时数值型的,将数据转为数值型即可。

如果直接用as.numeric()报错:

>genes_samples_fpkm=as.numeric(genes_samples_fpkm)
Error: 'list' object cannot be coerced to type 'double'

报错原因:需要先将list转为unlist,

完整代码如下

FPKM2TPM <- function(fpkm){
 exp(log(fpkm) - log(sum(fpkm)) + log(1e6))}
#FPKM2TPM <- function(fpkm){(fpkm/(sum(fpkm)))*1000000}
rownames(M_NM_fpkm)=paste("sample",1:29,sep="")
genes_samples_fpkm=M_NM_fpkm[,1:6]
genes_samples_fpkm[,1:6]=as.numeric(unlist(genes_samples_fpkm[,1:6]))
genes_samples_fpkm=t(genes_samples_fpkm)#行是基因,列是样本
M_NM_TPM<- apply(genes_samples_fpkm,2,FPKM2TPM)#按照样本,如果行是基因,列是样本名,则按列来,apply参数选择2.

参考(21条消息) Error: (list) object cannot be coerced to type 'double'_奋斗的code的博客-CSDN博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值