Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取R中非常小的p值_R_P Value - Fatal编程技术网

读取R中非常小的p值

读取R中非常小的p值,r,p-value,R,P Value,我在使用R时遇到了一个问题,就是计算一些基因的大z分数的p值。我使用Rmpfr包,使用以下代码使其工作(感谢本论坛) 我将上述值输入为6.56E-329。现在,问题是当我试图读取包含所有p值的文件时,它再次将上述值读取为0 pval <- file$pvalue pval[1] [1] 0 pval[1] <- 6.56E-329 pval[1] [1] 0 pval您是如何创建p值文件的?除非使用了save()和load()否则在保存它们时会降低精度: library(Rmpfr

我在使用R时遇到了一个问题,就是计算一些基因的大z分数的p值。我使用Rmpfr包,使用以下代码使其工作(感谢本论坛)

我将上述值输入为6.56E-329。现在,问题是当我试图读取包含所有p值的文件时,它再次将上述值读取为0

pval <- file$pvalue
pval[1]
[1] 0
pval[1] <- 6.56E-329
pval[1]
[1] 0

pval您是如何创建p值文件的?除非使用了
save()
load()
否则在保存它们时会降低精度:

library(Rmpfr)
pval <- 2*Rmpfr::pnorm(mpfr(abs(38.77589104), precBits=100), lower.tail=FALSE, log.p = FALSE)
pval
# 1 'mpfr' number of precision  100   bits 
# [1] 6.5625457492544973317295147124225e-329
save(pval, file="Test.RData")
rm(pval)
pval
# Error: object 'pval' not found
load("Test.RData")
pval
# 1 'mpfr' number of precision  100   bits 
# [1] 6.5625457492544973317295147124225e-329

最有可能的是,如此小的数字无法精确存储。在我的机器上
.machine$double.xmin
给出2.225074e-308。无论如何:因为这是一个p值,所以这么小的值是没有意义的。你应该认为它是零。谢谢你的评论。我明白这一点。但问题是这样小的值在我们的领域很常见,我的下游分析需要进一步处理的精确值:(所以我在想是否有办法是的,我知道非常小的p值通常通过生物信息学数据的统计测试报告。这并不意味着它们有用,或者应该简单地按“原样”使用)。这些文件是csv格式的,这是另一个软件的输出。我手动计算了p值为0的基因的p值,并将其添加回csv/excel文件。现在我正试图通过R读取csv文件,并对p值进行进一步分析。您可以尝试联系软件包维护人员
维护人员(“Rmpfr”)
,但如果您将值转换为字符串,它们会自动转换(请参阅上面的修订答案)。感谢dcarlson的回复。是的,我使用Rmpfr包获取p值,将这些p值转换为日志,并使用该日志值(作为数字)在我的代码中进行进一步分析。没有将值保存在excel中。因此我完成了我的工作!
library(Rmpfr)
pval <- 2*Rmpfr::pnorm(mpfr(abs(38.77589104), precBits=100), lower.tail=FALSE, log.p = FALSE)
pval
# 1 'mpfr' number of precision  100   bits 
# [1] 6.5625457492544973317295147124225e-329
save(pval, file="Test.RData")
rm(pval)
pval
# Error: object 'pval' not found
load("Test.RData")
pval
# 1 'mpfr' number of precision  100   bits 
# [1] 6.5625457492544973317295147124225e-329
example <- c("1.4142135623730951454746218587388", "1.7320508075688771931766041234368", 
"2.2360679774997898050514777423814", "2.6457513110645907161710965738166", 
"3.3166247903553998099823729717173")
mpfr(example)
# 5 'mpfr' numbers of precision  107   bits 
# [1] 1.414213562373095145474621858738804 1.732050807568877193176604123436797 2.236067977499789805051477742381394
# [4] 2.645751311064590716171096573816588 3.316624790355399809982372971717293
mpfr(example)^2
# 5 'mpfr' numbers of precision  107   bits 
# [1] 2.000000000000000273432346306476854 2.999999999999999652374485391952952 5.000000000000000485863154281767975
# [4] 7.000000000000000664980387281581168 10.99999999999999974042396434698263