У меня есть вектор с именем:
ts<- c(1.061786, 1.201682, 1.265509, 1.372124, 1.572853, 1.629114, 1.660798, 1.898390, 1.908208, 1.944675)
.Теперь я хочу сделать еще один вектор из этого, который дает разницу между последовательными членами.И для последнего значения (тс [10]);разница будет от двойной буквы "Т".
Код выглядит следующим образом:
cppFunction("
std::vector<double> res (std::vector<double> ts, double T ){
std::vector<double> newts(ts.size()+1);
newts[0]=0.0;
for(int j=1; j<=ts.size(); j++){
if(j< ts.size()){
newts[j]= ts[j]-ts[j-1];
}
else if (j== ts.size()){
newts[j]= T -ts[j];
}
else{
newts[j]=0.0;
}
}
return newts;
}
")
.Фактический результат для res (ts, T = 2) должен быть следующим:
[1] 0.000000000 0.139895661 0.063826732 0.106615236 0.200729464 0.056260681 0.031683749 0.237591892
[9] 0.009818105 0.036467479 0.05532473
.Но это дает мне результат:
[1] 0.000000000 0.139895661 0.063826732 0.106615236 0.200729464 0.056260681 0.031683749 0.237591892
[9] 0.009818105 0.036467479 2.000000000
То есть последний член нового вектора неверен.Почему это происходит?Любое предложение?
Редактировать
Даже если я использую следующий код:
cppFunction("
std::vector<double> res (std::vector<double> ts, double T ){
std::vector<double> newts(ts.size()+1);
for(int j=0; j<=ts.size(); j++){
if(j==0){
newts[j]=0.0;
}
else if(j< ts.size()){
newts[j]= ts[j]-ts[j-1];
}
else if (j== ts.size()){
newts[j]= T -ts[j];
}
else{
newts[j]=0.0;
}
}
return newts;
}
")
, он все равно дает мне неправильный результат.