String 对Rcpp中字符串的串联感到困惑

String 对Rcpp中字符串的串联感到困惑,string,rcpp,String,Rcpp,我试图循环遍历一个数据帧,并连接Rcpp中由空格分隔的字块 我试着阅读了一些关于堆栈溢出的答案,但对于Rcpp中字符串是如何连接的,我完全感到困惑。(例如) 我知道C++中可以使用+运算符来添加字符串。< /P> 下面是我的Rcpp函数 cppFunction(' Rcpp::StringVector formTextBlocks(DataFrame frame) { #include <string> using namespace Rcpp; NumericVector fr

我试图循环遍历一个数据帧,并连接Rcpp中由空格分隔的字块

我试着阅读了一些关于堆栈溢出的答案,但对于Rcpp中字符串是如何连接的,我完全感到困惑。(例如)

我知道C++中可以使用+运算符来添加字符串。< /P> 下面是我的Rcpp函数

cppFunction('
Rcpp::StringVector formTextBlocks(DataFrame frame) {
#include <string> 
using namespace Rcpp;
 NumericVector frame_x = as<NumericVector>(frame["x"]);

   LogicalVector space = as<LogicalVector>(frame["space"]);
   Rcpp::StringVector text=as<StringVector>(frame["text"]);
  if (text.size() == 0) {
    return text;
  }
  int dfSize = text.size();

  for(int i = 0;  i < dfSize; ++i) {
    if ( i !=dfSize  ) {
     if (space[i]==true) {

     text[i]=text[i] + text[i+1]  ;

    }
  }

  }
  return text;
}
')
cppFunction('
Rcpp::StringVector formTextBlocks(数据帧){
#包括
使用名称空间Rcpp;
数字向量帧_x=as(帧[“x”]);
LogicalVector空间=as(帧[“空间]);
Rcpp::StringVector text=as(框架[“文本]);
如果(text.size()==0){
返回文本;
}
int dfSize=text.size();
对于(int i=0;i
错误出现在
错误:与“operator+”不匹配的行上。


字符串如何在循环中串联?

由于
运算符+
是为
std::string
定义的,因此最简单的方法是将
文本
列转换为
std::vector
,而不是
Rcpp::StringVector

Rcpp::cppFunction('
std::vector formTextBlocks(数据帧){
LogicalVector空间=as(帧[“空间]);
std::vector text=as(框架[“文本]);
如果(text.size()==0){
返回文本;
}
int dfSize=text.size();
对于(int i=0;i[16]“H”“S”“LX”“XO”“OY”“Y”“E”“VD”“D”“TN”“N”“LL”“LQ”“Q”“F”
#>[31]“XX”“X”“S”“R”“P”“L”“M”“GK”“KD”“DD”“D”“H”“M”“M”“K”
#>[46]“N”“GP”“PG”“G”“P”“G”“O”“N”“NY”“Y”“OX”“X”“LX”“XF”“FS”
#>[61]“SE”“E”“PS”“S”“YD”“D”“F”“Z”“H”“ZN”“N”“OM”“M”“XH”“HV”
#>[76]“V”“OX”“X”“J”“BZ”“Z”“FZ”“ZE”“E”“SV”“V”“G”“F”“DZ”“ZF”
#>[91]“F”“PB”“B”“K”“N”“U”“B”“PV”“V”“C”
由(v0.3.0)于2019-11-29创建

注:

  • 我已使用删除了
    #include
    。这些不是必需的,不属于函数定义的范围
  • 我已删除
    I!=dfSize
    test,无论如何它都不会为false
  • 循环的长度减少了1,因为您正在接触元素
    i+1