Ich versuche, einen Vektor mit Datumsinformationen aus einer data.frame
zu extrahieren und zu unterteilen. Ich bin in der Lage, die DateVector
von der DataFrame
erfolgreich zu extrahieren; Ich erhalte jedoch einen Fehler, wenn ich versuche, die Daten zu unterteilen.Subsetting eines DateVectors
Die unten funktioniert gut in Anbetracht der /* */
um die DateVector
Teilmengen.
Rcpp::cppFunction('
Rcpp::DataFrame test(DataFrame x, StringVector y) {
StringVector New = x["string_1"];
std::string KEY = Rcpp::as<std::string>(y[0]);
Rcpp::LogicalVector ind(New.size());
for(int i = 0; i < New.size(); i++){
ind[i] = (New[i] == KEY);
}
Rcpp::StringVector st1 = x["string_1"];
Rcpp::StringVector Id = x["ID"];
Rcpp::StringVector NameId = x["NameID"];
Rcpp::DateVector StDate = x["StartDate"];
Rcpp::DateVector EtDate = x["EndDate"];
/*
Rcpp::DateVector StDate_sub = StDate[ind];
Rcpp::DateVector EtDate_sub = EtDate[ind];
*/
return Rcpp::DataFrame::create(Rcpp::Named("string_1") = st1[ind],
Rcpp::Named("ID") = Id[ind],
Rcpp::Named("NameID") = NameId[ind]/*,
Rcpp::Named("StartDate") = StDate_sub,
Rcpp::Named("EndDate") = EtDate_sub*/
);
}')
Es gibt zwei bemerkenswerte Fehler, die ich erhalten:
error: invalid user-defined conversion from 'Rcpp::LogicalVector {aka Rcpp::Vector<10, Rcpp::PreserveStorage>}' to 'int' [-fpermissive]
Rcpp::DateVector StDate_sub = StDate[ind]
Das zweite ist:
no known conversion from 'SEXP' to 'int' file585c1863151c.cpp:23:53: error: conversion from 'Rcpp::Date' to non-scalar type 'Rcpp::DateVector {aka Rcpp::oldDateVector}' requested
Rcpp::DateVector EtDate_sub = EtDate[ind];
ich bei der Dokumentation sah, konnte aber nicht einen Weg finden. Entschuldigung, wenn ich es verpasst habe. Ich habe ein paar Datumsvariablen in data.frame
. Ich verwende Rcpp, um den Datensatz in einer verschachtelten for-Schleife zu unterteilen. Derzeit dauert es zu viel Zeit. Ich kann es in data.table
oder dplyr
nicht implementieren, wie der Teilsatzdatensatz für einige Verarbeitung erforderlich ist.
Sieht so aus, als ob die Implementierung des Subset-Operators unter neuen und alten 'DateVector'-Implementierungen problematisch ist: / – coatless