【问题标题】:Trouble with a loop statement in RR中的循环语句有问题
【发布时间】:2015-05-08 02:05:36
【问题描述】:

我无法编写正确的 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))

【问题讨论】:

  • 您能否提供wz 的示例?是否保证存在解决方案? (这不是 for 循环的工作。)

标签: r if-statement for-loop conditional-statements


【解决方案1】:

不太清楚,但我假设您想知道w*z 的累积总和何时达到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]

【讨论】:

  • 您提供的代码完美运行,谢谢!我从错误的角度处理了这个方程,我应该使用累积汇总函数而不是使用循环函数来尝试一系列增加的值,最终提供答案。
猜你喜欢
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多