嵌套for循环的结果与独立函数不一致
我正在做一个循环,用于计算一个名为“snp1”的变体的Hardy Weinberg测试的威力(使用HWPower命令,来自HardyWeinberg软件包)。该命令需要输入n(样本大小)和pA(次要等位基因频率)。我必须用大量的ns和pAs分别进行多次计算,因为它们代表不同的总体样本,所以我手动进行了前两次计算,但现在我想为所有其他样本创建一个for循环。 我从前两个简单的循环开始,因此我可以轻松地检查结果是否正常(因此,循环工作正常)。但是我在比较这两种计算的结果时遇到了一个问题,这让我觉得我的代码不是很好嵌套for循环的结果与独立函数不一致,r,for-loop,R,For Loop,我正在做一个循环,用于计算一个名为“snp1”的变体的Hardy Weinberg测试的威力(使用HWPower命令,来自HardyWeinberg软件包)。该命令需要输入n(样本大小)和pA(次要等位基因频率)。我必须用大量的ns和pAs分别进行多次计算,因为它们代表不同的总体样本,所以我手动进行了前两次计算,但现在我想为所有其他样本创建一个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
但当我单独使用函数计算它们时,我得到:
HWPower(n = 661,pA = 0.006051)
[1] 0.02107572
HWPower(n = 503, nA = 175)
[1] 0.04253145
我不知道导致不一致的问题在哪里。这很奇怪,因为它只出现在第一个结果中,而不出现在第二个结果中(第二个计算的功率是可以的,它给出了相同的结果,但第一个没有)。你的双循环是错误的。如果你运行这个
for(i in seq_along(snp1n)) {
for(j in seq_along(snp1pA)) {
print(paste(i,j))
HWpowersnp1[i]<-HWPower(n=snp1n[i],pA=snp1pA[j])
}
}
你的双回路是错误的。如果你运行这个
for(i in seq_along(snp1n)) {
for(j in seq_along(snp1pA)) {
print(paste(i,j))
HWpowersnp1[i]<-HWPower(n=snp1n[i],pA=snp1pA[j])
}
}
您正在定义
hwpowersnp1您正在定义hwpowersnp1谢谢!现在我发现我误解了mapply的用法,这就是为什么我一开始没有使用它的原因。非常感谢你!问题解决了,谢谢!现在我发现我误解了mapply的用法,这就是为什么我一开始没有使用它的原因。非常感谢你!问题解决了。
HWpowersnp1 <- Map(HWPower, n=snp1n, pA=snp1pA)