【发布时间】:2021-12-09 04:59:31
【问题描述】:
我正在用 C++ 重写一个 R 程序。我想知道是否存在与 R 中的 which() 函数相同的 c++ 等效项或方法。这是 which() 函数有效完成的:
# A sequence
x <- c(10, 20, 30, 40, 50)
# This should return a numerical index (1, 2) since only the first two elements are <= 20
which(x <= 20)
所以which() 本质上是测试表达式并返回逻辑对象的 TRUE 索引。我尝试搜索Rcpp 糖,但似乎找不到。有which_max() 和which_min(),它们分别返回最大和最小元素的数字索引。我总是可以在 Rcpp 中使用 R 函数,但我有兴趣学习 c++ 方式如果可能。
【问题讨论】:
-
POC:你应该有
which(x <= 20)而不是which(x =<20) -
您可能看得太细了。考虑一下您打算如何处理这些索引。实现相同结果的 C++ 方法可能比您想象的要高一个级别;它可能是实现您计划做的下一件事,而不是沿途复制这一特定步骤。 (例如,有几个标准算法具有
_if形式,基本上将x <= 20作为参数。这些算法将仅对which将返回的索引进行操作,跳过其中的部分你可以看到索引。) -
语言之间通常没有一对一的映射,因为它们有非常不同的设计理念。从一种语言转换到另一种语言时,您通常也需要重塑自己的思维(这也意味着放弃以前语言中一些最喜欢的结构)
-
here 给出的答案也确实解决了手头的问题
-
请尝试使用
[rcpp[ which is:question进行搜索(是的,使用方括号和冒号,这些是 StackOverflow 的问题运算符),因为已提出此问题,并回答了 multiple 次之前。