【发布时间】:2018-03-05 20:54:57
【问题描述】:
%in% 是否有 Rcpp 糖分?
例如,我在 R 中有以下语句
y <- c('XA','XB','XC','XF','XK','XL','XM','XN','XO','XP','XS','XU','XW','XY', 'DF','DS','AS','XL','FG')
x <- ifelse(y %in% c("XA","XB","XC","XF","XK","XL","XM","XN","XO","XP","XS","XU","XW","XY"),"KCA","KUS")
我正在尝试使用 ||在上面的 Rcpp 中,其中 x 和 y 都被定义为类型
std::vector<std::string>
代码sn-p是
int n = y.size();
for (int i = 0; i < n; i++){
if (y[i] == 'XA' ||
y[i] == 'XB' ||
y[i] == 'XC' ||
y[i] == 'XF' ||
y[i] == 'XK' ||
y[i] == 'XL' ||
y[i] == 'XM' ||
y[i] == 'XN'||
y[i] == 'XO'||
y[i] == 'XP' ||
y[i] == 'XS' ||
y[i] == 'XU' ||
y[i] == 'XW' ||
y[i] == 'XY' ) {x[i] = 'KCA';}
else
{x[i] ='KUS';}
} //end of loop
但我收到以下错误:
ambiguous overload for operator'=='(operand types are 'std::basic_string<char>' and 'int')
有糖吗
%in%
我可以在 Rcpp 中使用,或者我如何使用 ||在Rcpp这里避免错误?
【问题讨论】:
-
我认为
%in%的 C++ 方式是std::find(),参见 例如 stackoverflow.com/questions/571394/… -
另外,欢迎使用 C++ 和字符串。你使用了一个
',你需要的字符串是"。之后,您的==比较运算符代码应该可以工作了。 -
是的,在将
'替换为"后它起作用了,但为什么会这样呢?这是否意味着我不能在std::vector<std::string>中使用'? -
语言定义回到 C。
'用于单个字符,它也转换为整数,因此您看到的错误。需要字符串"。 -
要真正复制
%in%,需要查看源代码。输入%in%(用单引号括起来)表明%in%本身就是match的糖。这是match 的主力函数。