【问题标题】:I want to return True/False on whether a value is in a group of values我想返回一个值是否在一组值中的 True/False
【发布时间】:2019-04-21 16:13:43
【问题描述】:

在 RStudio 中,我可以使用以下代码查看左侧的值是否在右侧的组中并返回 True/False。我将如何在 C++ 中执行此操作?


> 5 %in% c(4,8,10)
[1] FALSE
> 5 %in% c(4,5,10)
[1] TRUE
>

【问题讨论】:

  • @Eljay 这个问题是针对rcpp 标签的。不过,这仍然是一个糟糕的问题。
  • OP 正在询问 R,尽管他只提到了 RStudio,它的风格很差。在 R 中,逻辑变量可以有 三个 值:true、false 或 NA。
  • 在问题中说 c++ 似乎更多的人会理解......知道 c++ 的人可能不知道 Rcpp 是什么,但 Rcpp 用户会知道 c++。事后看来,我应该删除 Rcpp 标签。我不确定“在 R 中,逻辑变量可以具有三个值:true、false 或 NA”是什么意思。上面的代码只能返回 True 或 False。也许我在这里误解了你的意思。

标签: c++ operators rcpp


【解决方案1】:

您可以使用 Rcpp 提供的 in() 函数来重新创建 %in% 中缀运算符。

#include <Rcpp.h>

// [[Rcpp::export]]
Rcpp::LogicalVector match_with_in(Rcpp::NumericVector x, 
                                  Rcpp::NumericVector y) {

  // Mimic %in% with Rcpp
  Rcpp::LogicalVector matched_values = Rcpp::in(x, y);

  return matched_values;
}

测试:

x = 5
y = c(4, 8, 10)
match_with_in(x, y)
#> [1] FALSE

z = c(4, 5, 10)
match_with_in(x, z)
#> [1] TRUE

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 2017-03-08
    • 2017-09-29
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    相关资源
    最近更新 更多