0
RCPP的錯誤,我已經寫了有RCPP和C++ R一些代碼,試圖更加熟悉它:糖都()線
#include <Rcpp.h>
#include <vector>
using namespace Rcpp;
// [[Rcpp::export]]
CharacterMatrix reduce_sequences(CharacterMatrix completeDNA)
{
std::vector<int> informativeSites;
for(int i = 0; i < completeDNA.ncol(); i++)
{
CharacterVector bpsite(completeDNA.nrow());
for(int n = 0; n < completeDNA.nrow(); n++)
{
bpsite[n] = completeDNA(n,i);
}
if(any(bpsite != bpsite[0]).is_true()) informativeSites.push_back(i);
}
CharacterMatrix cutDNA(3, informativeSites.size());
for(int i = 0; i < informativeSites.size(); i++)
{
for(int n = 0; n < cutDNA.nrow(); n++)
{
cutDNA(n,i) = completeDNA(n,informativeSites[i]);
}
}
return cutDNA;
}
但我得到一個COMPLE錯誤,但不是從我的源文件,但來自Comparator_With_One_Value.h:
我不會假裝完全理解這些錯誤,因爲我仍然處於C++初期階段,但通過適當評論我的代碼並找出導致它的原因,它是我的第17行:
if(any(bpsite != bpsite[0]).is_true()) informativeSites.push_back(i);
我認爲它與我使用任何()。我做錯了什麼?
編輯:更改的行反映的所有問題解決以上但有兩個: 控制檯輸出:
Error in Rcpp::sourceCpp("reduceseq.cpp") :
Error 1 occurred building shared library.
問題從Comparator_With_One_Value.h operands to ?: have different types 'SEXPREC*' and 'int'
和 invalid conversion from 'SEXPREC* const' to 'int'
感謝, 奔回來了。
嗨,這得到擺脫的問題,但有兩個其他人仍然在錯誤輸出。這些在Comparitor_With_One_Value.h中,並且仍然是由這一行引起的 - 如果我刪除註釋,那麼錯誤就會停止。 '操作數?有不同類型的「SEXPREC *」和「int」'和'無效的從「SEXPREC * const」到「int」的轉換。它似乎認爲在這一行我將一個SEXP轉換爲一個整數,但該行使用的數據類型是std :: vector和一個'CharacterVector'。 '我'哪個被推回到'std :: vector'也是'int',除非我錯了(可能!)。 –
Ward9250
用此行更新原始代碼塊。 – Ward9250
我剛剛在rcpp-devel上回答了這個問題,以及我在這裏沒有看到您的問題。 *請選擇一個*,清單或SO,但是*不要交叉郵件*。我們通常會推薦rcpp-devel,但這是您的選擇。 –