我遇到了一个奇怪的问题:当我尝试使用括号(A(1,2))访问元素时,R会话崩溃。当我使用A [1,2]时,它返回第一列而不是第二列,当我尝试A [1,3],A [1,4],...时得到结果...
这是我的代码:
#include <Rcpp.h>
#include <String.h>
using namespace Rcpp;
// [[Rcpp::export]]
Rcpp::NumericMatrix Function_bag_ngrams(Rcpp::NumericMatrix idv_x_sacs, Rcpp::StringMatrix idv, Rcpp::StringMatrix liste_ngrammes_gardes, Rcpp::StringVector colNamesIdBags )
{
int nbr_idv = idv_x_sacs.nrow();
int nbr_sac = idv_x_sacs.ncol();
int nbr_composants_sacs = liste_ngrammes_gardes.nrow();
std::string str_aux = "";
std::string idSac = "";
int indexIdSac = 0;
for(int i=0; i<nbr_idv; i++)
{
str_aux = (String) idv(i,1);
for(int j=0; j<nbr_composants_sacs; j++)
{
if(str_aux.find(liste_ngrammes_gardes(j,2)) != std::string::npos)
{
idSac = (String) liste_ngrammes_gardes(j,1);
indexIdSac = 0;
for(int k=0;k<nbr_sac;k++)
{
if((String) colNamesIdBags(k)==idSac)
{
indexIdSac = k;
break;
}
}
idv_x_sacs(i,indexIdSac) = 1;
}
}
}
return idv_x_sacs;
}
我知道问题来自括号,因为我尝试了一个简单的代码,试图访问一个元素并且它崩溃了。
这是我尝试的一个简单代码:
#include <Rcpp.h>
#include <String.h>
using namespace Rcpp;
// [[Rcpp::export]]
std::string Function(Rcpp::StringMatrix M)
{
std:string tmp = M(1,1)
return tmp;
}
以下是我在R中使用它的方式:
sourceCpp("Function.cpp")
Function(matrix(rep("test",4),nrow=2,ncol=2))
感谢的。
答案 0 :(得分:1)
您正在使用
创建数字矩阵matrix(rep(0,4),nrow=2,ncol=2)
您要发送到期望StringMatrix的函数
Function(Rcpp::StringMatrix M)
这不可行。