我有一个向量X,它可能包含大量的条目,我想找到最大索引,使得X [我] < = a *我/米(对于一些常数a,m),我真的宁愿不循环向量。我想过使用Position,但我无法弄清楚如何创建一个合适的函数来考虑向量的索引。R:如何找到一个向量中的条目满足特定条件的最大索引
我忘了提及矢量的条目将被排序,以便可能有所帮助。
帮助将不胜感激
我有一个向量X,它可能包含大量的条目,我想找到最大索引,使得X [我] < = a *我/米(对于一些常数a,m),我真的宁愿不循环向量。我想过使用Position,但我无法弄清楚如何创建一个合适的函数来考虑向量的索引。R:如何找到一个向量中的条目满足特定条件的最大索引
我忘了提及矢量的条目将被排序,以便可能有所帮助。
帮助将不胜感激
我理解你的问题(如的“现在”)不同于ChinmayP,所以也许这样的:
foo <- which (X/(1:(length(X)) < a/m)
rev(foo)[1]
这会给你的X
具有最大指数i
(如X[i]
)的元素,其符合你的条件。
以下应该给你你想要的。
max(which(X <= a/m * seq_along(X)))
尽管如此,向后循环仍然可能会更好,因为您只需要最大的索引值。
for (i in length(X):1) { if (X[i] <= a*i/m) break } ; i
当循环中断时,我将包含所需的最大索引。
如果您提供[**最小,可重现的示例**],您就更有可能收到有用的答案(http://stackoverflow.com/questions/5963269/how-to-make-a-great- r-reproducible-example/5963610#5963610)包括输入数据,期望的结果和您尝试过的代码以及为什么它不起作用。 – Henrik