0

我正在尝试在 R 中编写加权 Holm 程序。我还想添加 alpha 并统计使用了多少 alpha。这个计数的最终总数(WHalphaTOTAL)是我需要能够在 while 循环之外使用的。我知道下面引用的 data2 数据框是准确定义的。有问题的代码部分如下:

    #WeightedHolms
WHalphaTOTAL=0  
    cat("Weighted Holms RESULTS\n")
    m=1
    newweight<-data2[m,2]
    denomweightsum<-sum(data2[(m:n),2])
    newalpha<-(newweight*ALPHA)/denomweightsum
    newpval<-data2[m,4]
    hys<-data2[m,1]
    WHalphaTOTAL<-WHalphaTOTAL+newalpha
    if(newpval<newalpha)
    {
        while((newpval<newalpha) & (m<=n))
        {
            print(WHalphaTOTAL)
            cat("Reject Hypothesis", hys,"since P-value", newpval,"<", newalpha,"\n")
            WHrej=WHrej+1
            m<-m+1
            newweight<-data2[m,2]
            denomweightsum<-sum(data2[(m:n),2])
            hys<-data2[m,1]
            newalpha<-newweight*ALPHA/denomweightsum
            newpval<-data2[m,4]
            WHalphaTOTAL<-WHalphaTOTAL+newalpha

        }
        if(m-1==n)
        {
            cat("\n")
        }
        else
        {
            for(i in m:n)
            {
                cat("Fail to Reject Hypothesis", data2[i,1],"\n")
            }
        }
    }
    else
    {
        for(i in m:n)
        {
            cat("Fail to Reject Hypotheses", data2[i,1],"\n")
        }
    }
    WHalphaTOTAL<-as.numeric(WHalphaTOTAL)
    print(WHalphaTOTAL)

当我在 while 循环之外打印出 WHalphaTOTAL 时,它说该值为 NA。但是,在 while 循环内,它正确地跟踪(并添加到)总数。如果这很重要,这部分代码将嵌套在 for 循环中(对不起,我对 R 编码有点陌生)。我需要 WHalphaTOTAL 的最终值,但找不到获取它的方法。我尝试返回该值,但它打破了我需要继续运行的循环。我只需要能够打印和使用最终的 WHalphaTOTAL 值。非常感谢任何和所有帮助。

4

0 回答 0