У меня надуманный вопрос о Rcpp
, я обычно использую много объектов DataFrame
для создания xxxVector
в C++
и экспортирую их обратно в R
. Иногда мне приходится иметь дело с 10 столбцами, которые я должен определить сам, например:
export [[Rcpp::export]]
List myFunction(DataFrame df){
NumericVector a = df["a"], b = df["b"], c = df["c"];
IntegerVector a2 = df["a2"], b2 = df["b2"], c2 = df["c2"];
CharacterVector a3 = df["a3"], b3 = df["b3"], c3 = df["c3"];
const int N = df.nrows();
LogicalVector out(N),out1(N);
for(unsigned int i = 0; i<N; ++i){
//here I do what I want to do
}
return(List::create(_["out"]=out, _["out1"]=out1));
}
Если список объявлений длинный со сложными именами, объявления занимают много времени. Я мог бы просто не объявлять a,b,c,...
и работать с df["a"],...
, но это было бы еще дольше. Тогда мой вопрос (и это вполне может быть ересью) есть ли способ автоматически определить эти векторные столбцы? Я подумал, что, поскольку у нас есть DataFrame
, который представляет собой список указателей на столбцы, возможно, его можно будет автоматизировать...
df[i][j]
, гдеi
будет местом, скажем,b
, аj
будет иметь доступ кj
элементу вектора? Если это так, я мог бы это сделать, но я не хочу этого делать, потому что это сделало бы код нечитаемым (даже для меня самого). - person statquant   schedule 19.07.2013