在R中保存简单循环的输出时出现问题
希望这封邮件能让你安全健康 我在收集一个无法破解的简单循环的输出时遇到了一个令人沮丧的问题 下面是循环,它使用我的数据的不同上限多次计算相同的汇总统计数据。这将为我提供正确的值,并且打印时不会出现任何问题在R中保存简单循环的输出时出现问题,r,for-loop,R,For Loop,希望这封邮件能让你安全健康 我在收集一个无法破解的简单循环的输出时遇到了一个令人沮丧的问题 下面是循环,它使用我的数据的不同上限多次计算相同的汇总统计数据。这将为我提供正确的值,并且打印时不会出现任何问题 > for (i in maxdist) + { + homo_sax <- sum(W_distances$distance > 0 & W_distances$distance < i & W_distances$concat_I
> for (i in maxdist)
+ {
+ homo_sax <- sum(W_distances$distance > 0 & W_distances$distance < i & W_distances$concat_ID=="saxatilis_saxatilis") ## count all sax_sax pairs
+ homo_arc <- sum(W_distances$distance > 0 & W_distances$distance < i & W_distances$concat_ID=="arcana_arcana") ## count all the arc_arc pairs
+ hetero <- sum(W_distances$distance > 0 & W_distances$distance < i & W_distances$concat_ID=="arcana_saxatilis") ## count all the arc_sax pairs
+ total_homo = homo_sax + homo_arc ## calculate the total number of homo observations
+ temp_RI <- 1-2*hetero/(total_homo+hetero) ### calculate RI according to equation RI4 from Sobel & Chen (2013)
+ print(temp_RI)
+ }
[1] 0.2046285
[1] 0.1603105
[1] 0.1195596
[1] 0.01857161
[1] 0.01784158
[1] 0.01498829
>
当我尝试将这些值保存到空向量时,问题就出现了,因为我得到的数字不同,并且不正确:
> maxdist <- seq(from = 0.5, to = 3, by = 0.5) ## the max distance for each bin
RI_bins <- vector("numeric",length(maxdist))
for (i in maxdist)
{
homo_sax <- sum(W_distances$distance > 0 & W_distances$distance < i & W_distances$concat_ID=="saxatilis_saxatilis") ## collect all sax_sax pairs
homo_arc <- sum(W_distances$distance > 0 & W_distances$distance < i & W_distances$concat_ID=="arcana_arcana") ## collect all the arc_arc pairs
hetero <- sum(W_distances$distance > 0 & W_distances$distance < i & W_distances$concat_ID=="arcana_saxatilis")
total_homo = homo_sax + homo_arc
temp_RI <- 1-2*hetero/(total_homo+hetero) ### equation RI4 from Sobel & Chen (2013)
RI_bins[i]<-temp_RI
}
> RI_bins
[1] 0.11955961 0.01784158 0.01498829 0.00000000 0.00000000 0.00000000
如果有人能帮助我理解我在这里遗漏了什么,我将不胜感激。提前谢谢
Seanmaxdist是一个浮点数,不能用作向量中的索引。通过尝试,小数被截断并插入其中
vec非常感谢您抽出时间来了解这一点以及您的解释。