Ошибка при сообщении, что у меня есть значение na / nan / inf, когда кажется, что его нет. ошибка в hclustfun (distc): na / nan / inf при вызове внешней функции (аргумент 11)

У меня есть файл, который выглядит так:

Taxa,D0,D1,...
1,0,10,...
20,0,0,...
...

Файл доступен здесь: https://www.dropbox.com/s/lvtxztz3kypnxre/Taxa_Conf.csv?dl=0

Когда я запускаю сценарий

$CONCOCT/scripts/ConfPlot.R -c Taxa_Conf.csv -o Taxa_Conf.pdf

Я получаю следующую ошибку:

Error in hclustfun(distc) : NA/NaN/Inf in foreign function call (arg 11)
Calls: heatmap.2 -> hclustfun
Execution halted

где ConfPlot.R выглядит как

#!/usr/bin/Rscript

#load libraries
library(gplots)
library(getopt)

spec = matrix(c('verbose','v',0,"logical",'help','h',0,"logical",'confile','c',1,"character",'ofile','o',1,"character"),byrow=TRUE,ncol=4)

opt=getopt(spec)

if( !is.null(opt$help)) {
cat(getopt(spec, usage=TRUE)); 
q(status=1);
}

confFile <- opt$confile

Conf <- read.csv(confFile,header=TRUE,row.names=1)
Conf.t <- t(Conf)
ConfP <- Conf.t/rowSums(Conf.t)

crp <- colorRampPalette(c("blue","red","orange","yellow"))(100)

pdf(opt$ofile)

heatmap.2 (as.matrix(t(ConfP)),col=crp,trace="none",dendrogram="none",Rowv=FALSE,lwid = c(1.25,4.5),lhei = c(1.25,4.5),cexRow=0.5)

dev.off()

Прочитав Ошибка при создании тепловых карт - NA / NaN / Inf при вызове внешней функции (аргумент 11), попробовал

> a=read.csv("/home/mathed/Simulation/custom_desman/1/Strains/Simulation/Metabat/Taxa_Conf.csv",header=TRUE,row.names=1)
> any(is.na(a))
[1] FALSE

Кажется, что нет значения NA. ConfPlot.R работает и с другими моими файлами. В чем проблема?? Кажется, что здесь нет значений na, nan или inf. заранее спасибо

1
0
604
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Отметьте эту строку:

ConfP <- Conf.t/rowSums(Conf.t)

Он должен оценивать по существу деление на ноль:

> 0/0
[1] NaN

> 1/0
[1] Inf

Ой! Теперь я понимаю, почему это приводит к NaN! Большое спасибо @ zx8754

Sumin Kim 31.10.2018 13:18

Кажется, проблема в первом столбце D0 со всеми нулями! Большое тебе спасибо.

Sumin Kim 31.10.2018 13:21

Другие вопросы по теме