我在编写适当的R代码以执行循环(如果有条件的话)的条件时遇到了麻烦。我正在尝试求解x(必须是整数),例如F_c = 5
(见下文)。z和w都是一系列已知值,其中z代表丰度值,w代表采样面积。现在,我实际上是在输入x的随机值,以了解可以达到多近的距离F_c = 5
。我想为此编写一个循环,当x的迭代结果为时,也要使循环停止F_c = 5
。任何帮助将不胜感激,我已经花了很多时间在此上并且还没有找到类似的问题(但是如果有任何问题,请直接把我引向解决方案)。谢谢,
cond = ifelse(z<=x, 1, 0)
F_c = 100*(sum(w*z*cond)/sum(w*z))
不太清楚,但是我假设您想知道在什么时候累积的总和w*z
达到的5%sum(w*z)
,同时遵循的顺序z
。如果正确,则可以尝试以下操作:
#for every z get the order indices
indices<-order(z)
#sort both z and w by z
z<-z[indices]
w<-w[indices]
#now cumsum will give you the cumulative sum of a vector
#and you compare it to sum(z*w).
#findInterval will give you the index of when you reach .05
res<-findInterval(.05,cumsum(w*z)/sum(w*z))
#the value you are looking for:
z[res]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句