Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
嵌套for循环的结果与独立函数不一致_R_For Loop - Fatal编程技术网

嵌套for循环的结果与独立函数不一致

嵌套for循环的结果与独立函数不一致,r,for-loop,R,For Loop,我正在做一个循环,用于计算一个名为“snp1”的变体的Hardy Weinberg测试的威力(使用HWPower命令,来自HardyWeinberg软件包)。该命令需要输入n(样本大小)和pA(次要等位基因频率)。我必须用大量的ns和pAs分别进行多次计算,因为它们代表不同的总体样本,所以我手动进行了前两次计算,但现在我想为所有其他样本创建一个for循环。 我从前两个简单的循环开始,因此我可以轻松地检查结果是否正常(因此,循环工作正常)。但是我在比较这两种计算的结果时遇到了一个问题,这让我觉得我

我正在做一个循环,用于计算一个名为“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)