Rcpp вопрос о получении sub CharacterVector. Я сделал функцию стиля скользящего окна, которая работает на нескольких NumericVectors, но не работает, когда я включаю CharacterVectors. Я получаю эту ошибку каждый раз, когда пытаюсь использовать CharacterVector: «получение адреса временного прокси типа объекта».
Это строка кода, которая вызывает проблему:
CharacterVector subchrom (&chrom[i], &chrom[i+4]);
Я новичок в C ++, и, таким образом, решение на данный момент мне недоступно. Из того, что я прочитал, проблема заключается в использовании указателя «&» для двух разных типов векторов, но я не понимаю, как это исправить. Кто-нибудь возражал бы мне помочь решить эту ошибку?
Я немного почитал, и теперь у меня второй вопрос. "CharacterVectors" в Rcpp запрограммированы как прокси? Это единственный тип вектора, с которым у меня возникла эта проблема. Какой лучший обходной путь?
Вот полный пример:
#example data for R
start <- c(0, 2, 4, 6, 8, 10)
chrom <- c("chr1", "chr1", "chr1", "chr1", "chr1", "chr1")
df <- data.frame(start, chrom)
Это программа .cpp Rcpp:
#include <algorithm>
#include <Rcpp.h>
#include <vector>
using namespace Rcpp;
// [[Rcpp::export]]
List modifyDataFrame2(DataFrame df) {
// access the columns
CharacterVector chrom = df["chrom"];
IntegerVector start = df["start"];
List Out = List::create();
// write the for loop
for(int i=0; i < df.nrow(); ++i){
NumericVector substart (&start[i], &start[i+4]);
CharacterVector subchrom (&chrom[i], &chrom[i+4]);
Rcout << "substart is:" <<substart << "\n";
Rcout << "subchrom is:" <<subchrom << "\n";
List temp = List::create(subchrom, substart);
Out.push_back(temp);
}
return Out;
}
В данный момент у меня проблемы со съемкой оконной функции, поэтому она ничего не делает, кроме печати субвекторов. Я хочу набрать свой ввод и вывод из c ++ до того, как усложню вычисления.
Спасибо за вашу помощь. Я очень ценю ваше время.