R 科学数字处理

R 科学数字处理,r,numbers,R,Numbers,我使用的是具有以下预处理步骤的qvalue包 if(min(p)<0 || max(p)>1) { print("ERROR: p-values not in valid range"); return(0) } if(length(lambda)>1 && length(lambda)<4) { print("ERROR: If length of lambda greater than 1, you need at l

我使用的是具有以下预处理步骤的qvalue包

 if(min(p)<0 || max(p)>1) {
    print("ERROR: p-values not in valid range"); return(0)
    }
    if(length(lambda)>1 && length(lambda)<4) {
    print("ERROR: If length of lambda greater than 1, you need at least 4 values."); return(0)
    }
    m <- length(p)
每当我使用此变量的函数时: fdrq=qvalue(作为数值(nd[,3]),fdr.level=0.05)

我得到一个错误:

[1] "ERROR: p-values not in valid range"
我试图看到最大值和最小值,看起来它在范围内

> max(nd[,3])
[1] 1
> min(nd[,3])
[1] 0.0001641695
请就可能出现的问题提供建议!这是处理十进制数的特殊方法吗。。。。。或者这是一个错误


谢谢,

我怀疑您的值稍微大于1,但会打印为“1”:

一个简单的解决方法可能是强制所有大于1的值精确到1.0:

> x <- c(1, 0.7, 1.000000000000001, 0.3, 0)
> x
[1] 1.000000000000000 0.700000000000000 1.000000000000001 0.300000000000000
[5] 0.000000000000000
> x[x>1] <- 1
> x
[1] 1.0 0.7 1.0 0.3 0.0
>x
[1] 1.000000000000000 0.700000000000000 1.000000000000001 0.300000000000000
[5] 0.000000000000000
>x[x>1]x
[1] 1.0 0.7 1.0 0.3 0.0

我不知道在您的情况下,这种变通方法是否明智。

我怀疑您的值稍微大于1,但会打印为“1”:

一个简单的解决方法可能是强制所有大于1的值精确到1.0:

> x <- c(1, 0.7, 1.000000000000001, 0.3, 0)
> x
[1] 1.000000000000000 0.700000000000000 1.000000000000001 0.300000000000000
[5] 0.000000000000000
> x[x>1] <- 1
> x
[1] 1.0 0.7 1.0 0.3 0.0
>x
[1] 1.000000000000000 0.700000000000000 1.000000000000001 0.300000000000000
[5] 0.000000000000000
>x[x>1]x
[1] 1.0 0.7 1.0 0.3 0.0

我不知道在你的情况下,这种变通方法是否明智。

你怎么做
min(nd[,3])1
print?>min(nd[,3])max(nd[,3])>1[1]true你的变通方法违背了预处理步骤的目的。最好调查一下这个数字是如何略大于1的,然后解决这个问题。@Joshua Ulrich:也许吧。我认为我们没有足够的信息来判断这两种情况。我已经添加了一个注释。是的,当我设置数字20时,我得到了以下数字:1.0000000000000002220我如何强制每个大于1的值1@John:请参见我答案中的最后一个示例(在那里,
x
基本上是
nd[,3]
)。您的解决方法无法达到预处理步骤的目的。最好调查一下这个数字是如何略大于1的,然后解决这个问题。@Joshua Ulrich:也许吧。我认为我们没有足够的信息来判断这两种情况。我已经添加了一个注释。是的,当我设置数字20时,我得到了以下数字:1.0000000000000002220我如何强制每个大于1的值1@John:参见我答案中的最后一个例子(这里,
x
基本上是
nd[,3]
)。
> options(digits=20)
> x
[1] 1.000000000000001
> x <- c(1, 0.7, 1.000000000000001, 0.3, 0)
> x
[1] 1.000000000000000 0.700000000000000 1.000000000000001 0.300000000000000
[5] 0.000000000000000
> x[x>1] <- 1
> x
[1] 1.0 0.7 1.0 0.3 0.0