larger1temp = wbd663$mbsf[which(wbd663$mbsf > carb663$mbsf[i])]
larger1 = larger1temp[1]
^这就是我现在的做法,但必须有一个更好的方法。这是一个循环,解释了我。
基本上,wbd663$mbsf
是一个深度数组,carb663$mbsf
也是一个深度数组。我想在wbd663$mbsf
中找到大于给定carb663$mbsf[i]
值的最小深度值。
答案 0 :(得分:3)
我同意@John。作为sapply
的替代方案,您可以使用findInterval
,这非常快
As <- sort(A)
id <- findInterval(B, A)
As[id+1] # NA if lub does not exist.
答案 1 :(得分:2)
假设我有向量A而我有向量B的第4项。获得最小项目大于向量B第4项的语法是......
min(A[A > B[4])
但我有点担心你的问题应该真正详细说明,因为你已经在循环中获得了B的索引。你真的想要这些最低限度的每一个吗?
在这种情况下,您可以使用
sapply( B, function(x) min(A[A>x]) )
如果结果有点慢,你可以通过预先分配和使用直接索引加快速度。一个简单的版本就是。
As <- sort(A)
sapply( B, function(x) As[As>x][1] )
(好吧,实际上,这不是更快......不管怎样我都能看得更快)