#-----------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博客