String 对Rcpp中字符串的串联感到困惑
我试图循环遍历一个数据帧,并连接Rcpp中由空格分隔的字块 我试着阅读了一些关于堆栈溢出的答案,但对于Rcpp中字符串是如何连接的,我完全感到困惑。(例如) 我知道C++中可以使用+运算符来添加字符串。< /P> 下面是我的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
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
。这些不是必需的,不属于函数定义的范围
- 我已删除
test,无论如何它都不会为falseI!=dfSize
- 循环的长度减少了1,因为您正在接触元素
i+1