R-为向量中的每个元素找到满足不等式的向量中的第一个元素/位置
假设我有一个向量Y。如果我想知道Y大于4的地方,我可以使用R-为向量中的每个元素找到满足不等式的向量中的第一个元素/位置,r,R,假设我有一个向量Y。如果我想知道Y大于4的地方,我可以使用哪个(Y>4),函数位置的东西,等等。但是,现在我有一个向量X,我想为X的每个元素X获得一个元素哪个(Y>X)的向量。我可以用一个循环,但是对于大向量X,我想应用它,这是非常低效的 实现我想要的东西的更有效、矢量化的方法是什么?您可以使用基本软件包中的外部: 如果需要满足Y>X[i]的所有索引的列表: ## Test data: Y <- c(3,6,7,2,9,6,12,5,2,8) X <- c(4,6,8) indic
哪个(Y>4)
,函数位置的东西,等等。但是,现在我有一个向量X,我想为X的每个元素X获得一个元素哪个(Y>X)
的向量。我可以用一个循环,但是对于大向量X,我想应用它,这是非常低效的
实现我想要的东西的更有效、矢量化的方法是什么?您可以使用基本
软件包中的外部
:
如果需要满足Y>X[i]
的所有索引的列表:
## Test data:
Y <- c(3,6,7,2,9,6,12,5,2,8)
X <- c(4,6,8)
indicesList <- apply(X = outer(Y, X, '>'), MARGIN = 2, FUN = which)
> indicesList
[[1]]
[1] 2 3 5 6 7 8 10
[[2]]
[1] 3 5 7 10
[[3]]
[1] 5 7
firstIndicesVec <- apply(X = outer(Y, X, '>'), MARGIN = 2, FUN = function(x) min(which(x)))
> firstIndicesVec
[1] 2 3 5
sapply(X,函数(X)(Y>X))
比apply
快?我发现后者和for循环之间没有区别,因此提出了这个问题。