簡體   English   中英

通過函數輸出在循環中填充矩陣

[英]fill a matrix in a loop by function output

一個函數從兩個向量(alpha 和 beta)中獲取兩組值。 我需要將函數輸出的值放在大小為 alpha x beta 的矩陣中。 該函數計算功率值。 我感謝您的幫助。 我需要一個矩陣 5x5。 到目前為止,我已經嘗試了以下代碼:

alpha = c(0.01,0.05,0.10,0.20)
beta = c(0.50,0.60,0.70,0.80,0.90)
pwrmx <- matrix(data=NA, nrow=alpha, ncol=beta)
for (a in alpha){

  for (b in beta){

    pwr <- power.prop.test(n=NULL, p1=0.25, p2=0.4, sig.level = a, power = b)
    print(pwr$n)
    }

}

你快到了,請參考評論:

alpha = c(0.01,0.05,0.10,0.20)
beta = c(0.50,0.60,0.70,0.80,0.90)

# nrow and ncol depends on the length of alpha and beta
pwrmx <- matrix(data=NA, nrow=length(alpha), ncol=length(beta))

# iterate over the length so that you can use it to assign back at the correct index in matrix
for (i in 1:length(alpha)){

    for (j in 1:length(beta)){

        # as you are interested in the number n from the power analysis
        pwrmx[i,j] <- (power.prop.test(n=NULL, p1=0.25, p2=0.4, sig.level = alpha[i], power = beta[j]))$n

                             }

                          }

pwrmx
# .        [,1]      [,2]      [,3]      [,4]     [,5]
#[1,] 129.38048 155.72219 186.60552 226.29474 287.6656
#[2,]  74.90845  95.24355 119.70057 151.86886 202.8095
#[3,]  52.75810  70.01993  91.18885 119.50901 165.1130
#[4,]  32.02629  45.74482  63.12283  87.00637 126.4575

不需要循環,您可以創建一個函數來執行計算

func <- function(x, y) power.prop.test(n=NULL, p1=0.25, p2=0.4, sig.level = x, power = y)$n

然后使用outer並將函數( func )應用於alphabeta每個組合

outer(alpha, beta, Vectorize(func))

#          [,1]      [,2]      [,3]      [,4]     [,5]
#[1,] 129.38048 155.72219 186.60552 226.29474 287.6656
#[2,]  74.90845  95.24355 119.70057 151.86886 202.8095
#[3,]  52.75810  70.01993  91.18885 119.50901 165.1130
#[4,]  32.02629  45.74482  63.12283  87.00637 126.4575

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM