我正在製作一個循環來計算稱爲'snp1'(使用HWPower命令,來自HardyWeinberg軟件包)的變體Hardy-Weinberg測試的功效。該命令需要輸入n(樣本大小)和pA(次要等位基因頻率)。我必須用許多ns和pAs分別計算許多時間,因爲它們表示不同的人口樣本,所以我手動做了前兩個,但現在我想爲所有其他人做一個for循環。 我從頭兩個簡單的循環開始,所以我可以很容易地檢查結果是否正常(並且因此循環正常工作)。但是在比較兩種計算結果時我遇到了一個問題,這使我認爲我的代碼不完全正確。嵌套for循環和獨立函數結果之間的不一致
install.packages("HardyWeinberg")
library(HardyWeinberg)
snp1n=c(661,503)
snp1pA=c(0.006051,0.174)
HWpowersnp1<-numeric(2)
for(i in seq_along(snp1n)) {
for(j in seq_along(snp1pA)) {
HWpowersnp1[i]<-HWPower(n=snp1n[i],pA=snp1pA[j])
}
}
HWpowersnp1
這給了我下面的載體:
HWpowersnp1
[1] 0.04109278 0.04253145
但是當我他們每個人單獨使用函數計算,我得到:
HWPower(n = 661,pA = 0.006051)
[1] 0.02107572
HWPower(n = 503, nA = 175)
[1] 0.04253145
我不知道在哪裏問題在於導致不一致。這很奇怪,因爲它只有第一個結果,而不是第二個結果(第二個計算的結果是好的,它給了我相同的結果,但第一個結果沒有)。
您正在定義'HWpowersnp1 <-numeric(2)'爲大小兩個的數值數組,所以你應該在循環的兩個值的結束。在第二次調用時,它會返回標量值。 –