2014-03-28 46 views
0

我有一个向量X,它可能包含大量的条目,我想找到最大索引,使得X [我] < = a *我/米(对于一些常数a,m),我真的宁愿不循环向量。我想过使用Position,但我无法弄清楚如何创建一个合适的函数来考虑向量的索引。R:如何找到一个向量中的条目满足特定条件的最大索引

我忘了提及矢量的条目将被排序,以便可能有所帮助。

帮助将不胜感激

+2

如果您提供[**最小,可重现的示例**],您就更有可能收到有用的答案(http://stackoverflow.com/questions/5963269/how-to-make-a-great- r-reproducible-example/5963610#5963610)包括输入数据,期望的结果和您尝试过的代码以及为什么它不起作用。 – Henrik

回答

2

我理解你的问题(如的“现在”)不同于ChinmayP,所以也许这样的:

foo <- which (X/(1:(length(X)) < a/m) 

rev(foo)[1] 

这会给你的X具有最大指数i(如X[i])的元素,其符合你的条件。

1

以下应该给你你想要的。

max(which(X <= a/m * seq_along(X))) 

尽管如此,向后循环仍然可能会更好,因为您只需要最大的索引值。

for (i in length(X):1) { if (X[i] <= a*i/m) break } ; i 

当循环中断时,我将包含所需的最大索引。