<div dir="ltr"><div dir="ltr">Yes, it helps a lot.<div><br></div><div>This confirms that I've been doing the right workarounds in my code. I thought there was a better way of doing it :-)</div><div><br></div><div>Best regards!</div><div><br></div><div>PS: today I've learned how to strip debug info using Makevars, thanks <a class="gmail_plusreply" id="plusReplyChip-1" href="mailto:edd@debian.org" tabindex="-1">@Dirk Eddelbuettel</a>  :)</div><div><br></div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><span style="font-size:12.8px">--</span><br style="font-size:12.8px"><span style="font-size:large">Francisco Bischoff, MD, MSc</span></div><div>Faculty of Medicine of the University of Porto, Portugal<br></div><div><br></div><div dir="ltr">- Master of Medical Informatics | topic: time series<br>- Research Associate | <a href="https://mailtrack.io/trace/link/9ef37dc54ba00ab7d340b722996cf6daf3e79982?url=http%3A%2F%2Fcintesis.eu%2Fai4health%2F&userId=3785237&signature=697deaf46289f1d7" target="_blank">artificial intelligence for health</a> @ <a href="https://mailtrack.io/trace/link/d2c9af4c46c5055871a1945a700b99ae5c72fb94?url=http%3A%2F%2Fcintesis.eu&userId=3785237&signature=c78e57822e67732e" target="_blank">cintesis.eu</a><br>- Teaching Assistant | department of community medicine, information and health decision sciences @ <a href="https://mailtrack.io/trace/link/5fda09f77e58c396486a5c7cec1f9b982a334c58?url=http%3A%2F%2Fmed.up.pt&userId=3785237&signature=9bd0b3da0cbd0f7a" target="_blank">med.up.pt</a><br><br>ORCID: 0000-0002-5301-8672 | Mendeley: francisco-bischoff | Google: tCeA0uUAAAAJ | ResearcherID: H-8261-2016 | ResearchGate: Francisco_Bischoff | CiênciaID B413-E0A0-DE8D | LinkedIn: franzbischoff</div></div></div></div></div></div></div></div></div></div></div></div></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jan 16, 2021 at 7:26 PM Balamuta, James Joseph <<a href="mailto:balamut2@illinois.edu">balamut2@illinois.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US" style="overflow-wrap: break-word;">
<div class="gmail-m_7169566865209700612WordSection1">
<p class="MsoNormal">Francisco,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Based on the opening post, I’d probably push you more toward Armadillo as Dirk was in the previous message. Using linspace<>(), may be a drop-in replacement for seq() with the appropriate helper functions. Long ago (~4+ years now) I wrote
 a few, see:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><a href="https://mailtrack.io/trace/link/80d9c725d261dfb303ccd7ab084979cdd2470c1b?url=https%3A%2F%2Fgithub.com%2Fcoatless%2Fr-to-armadillo%2Fblob%2Fmaster%2Fsrc%2Fseq.cpp&userId=3785237&signature=71713cb13a1d39e3" target="_blank">https://github.com/coatless/r-to-armadillo/blob/master/src/seq.cpp</a>
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">That said, Range is definitely preferred inside of subsets operations into Rcpp-like data structures. However, the subset and assign operation is a bit problematic with template expansion. So, the given example needs to have an intermediary:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">  // Initialization:<u></u><u></u></p>
<p class="MsoNormal">  Rcpp::NumericVector my_vec = Rcpp::NumericVector::create(1, 2, 3, 4, 5, 6);<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">  // Subset and Assign to 5:<u></u><u></u></p>
<p class="MsoNormal">  Rcpp::IntegerVector subset_idx = Rcpp::Range(0, 3);<u></u><u></u></p>
<p class="MsoNormal">  my_vec[subset_idx] = 20;<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">  // Subset Positions:<u></u><u></u></p>
<p class="MsoNormal"> Rcpp::NumericVector subset_result = my_vec[Rcpp::Range(4, 5)];<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Hope it helps.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Best,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">JJB<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12pt;color:black">From: </span></b><span style="font-size:12pt;color:black">Rcpp-devel <<a href="mailto:rcpp-devel-bounces@lists.r-forge.r-project.org" target="_blank">rcpp-devel-bounces@lists.r-forge.r-project.org</a>> on behalf of Francisco Bischoff <<a href="mailto:fbischoff@med.up.pt" target="_blank">fbischoff@med.up.pt</a>><br>
<b>Date: </b>Friday, January 15, 2021 at 8:05 PM<br>
<b>To: </b>Dirk Eddelbuettel <<a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a>><br>
<b>Cc: </b>"<a href="mailto:rcpp-devel@lists.r-forge.r-project.org" target="_blank">rcpp-devel@lists.r-forge.r-project.org</a>" <<a href="mailto:rcpp-devel@lists.r-forge.r-project.org" target="_blank">rcpp-devel@lists.r-forge.r-project.org</a>><br>
<b>Subject: </b>Re: [Rcpp-devel] Ranges and Casting<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">Thanks for the tips.<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Still, <span style="font-family:"Courier New"">Range() </span>
is the correct way to write:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">NumericVector my_vec(200);</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">my_vec(Range(0,10)) = 10;</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks in advance<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><br clear="all">
<u></u><u></u></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt">--<br>
</span><span style="font-size:18pt">Francisco Bischoff, MD, MSc</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Faculty of Medicine of the University of Porto, Portugal<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">- Master of Medical Informatics | topic: time series<br>
- Research Associate | <a href="https://mailtrack.io/trace/link/81d202d5907c5004ac87fa7189a5f43096f298cb?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2Fmailtrack.io%2Ftrace%2Flink%2F1765b288bbce44d233e851a8d862ec594378aa04%3Furl%3Dhttp*3A*2F*2Fcintesis.eu*2Fai4health*2F%26userId%3D3785237%26signature%3D1b62d7a180130981__%3BJSUlJSU!!DZ3fjg!oa0yWHu4WaDeqycuBEcPRuw3vEvJrYARPPIAzJNsnxdet6loFCJ7O95nLR4ByfJyNzg%24&userId=3785237&signature=6f861a4b397dfc79" target="_blank">
artificial intelligence for health</a> @ <a href="https://mailtrack.io/trace/link/5daf3fbe3ec2bde304cedb67b9c667f32b984de5?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2Fmailtrack.io%2Ftrace%2Flink%2F89b15c4212d5d6c8d4ba354ec92ab002ba9a96ef%3Furl%3Dhttp*3A*2F*2Fcintesis.eu%26userId%3D3785237%26signature%3D5fa97b31373fa664__%3BJSUl!!DZ3fjg!oa0yWHu4WaDeqycuBEcPRuw3vEvJrYARPPIAzJNsnxdet6loFCJ7O95nLR4B0QFIUzg%24&userId=3785237&signature=df96e330eb4e5915" target="_blank">
cintesis.eu</a><br>
- Teaching Assistant | department of community medicine, information and health decision sciences @
<a href="https://mailtrack.io/trace/link/83fdd729acfe28d35a79adba75b6427b6c655131?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2Fmailtrack.io%2Ftrace%2Flink%2F32f5f446b7bc0d597241524764b3636b5a75d466%3Furl%3Dhttp*3A*2F*2Fmed.up.pt%26userId%3D3785237%26signature%3Dcfbca25f5fe210b3__%3BJSUl!!DZ3fjg!oa0yWHu4WaDeqycuBEcPRuw3vEvJrYARPPIAzJNsnxdet6loFCJ7O95nLR4BoT_L--M%24&userId=3785237&signature=cb0c4f80c0dd44f2" target="_blank">
med.up.pt</a><br>
<br>
ORCID: 0000-0002-5301-8672 | Mendeley: francisco-bischoff | Google: tCeA0uUAAAAJ | ResearcherID: H-8261-2016 | ResearchGate: Francisco_Bischoff | CiênciaID B413-E0A0-DE8D | LinkedIn: franzbischoff<u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Sat, Jan 16, 2021 at 1:54 AM Dirk Eddelbuettel <<a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal"><br>
On 16 January 2021 at 01:35, Francisco Bischoff wrote:<br>
| About the Range() function, I think it should handle decreasing ranges<br>
| too...<br>
| But, idk if using Matlabs approach or R approach:<br>
| <br>
| R's:<br>
| <br>
| a <- 1<br>
| b <- 10<br>
| <br>
| print(a:b)<br>
| 1 2 3 4 5 6 7 8 9 10<br>
| print(b:a)<br>
| 10 9 8 7 6 5 4 3 2 1<br>
| <br>
| Matlab's<br>
| a = 1;<br>
| b = 10;<br>
| disp(a:b);<br>
| 1 2 3 4 5 6 7 8 9 10<br>
| disp(b:a);<br>
| numeric(0)<br>
| disp(b:-1:a)<br>
| 10 9 8 7 6 5 4 3 2 1<br>
| <br>
| I think that we are in the R domain, so we should use Range(b, a) normally<br>
| (my humble opinion).<br>
<br>
Hm but I think the Range class in Rcpp is not the same as R's seq(). It is<br>
used internally in a few places and may not generalize well to the 'b:-1:a'<br>
use.<br>
<br>
I had a quick look, and Armadillo may not have anything directly relevant<br>
either. linspace() is close but not quite the same.<br>
<br>
I would probably just write myself a little helper function.<br>
<br>
| About Casting, this is a good example:<br>
| <br>
| Rcout << Range(0, 10) << std::endl;<br>
| <br>
| This does not compute...<br>
| <br>
| What should I do?<br>
| <br>
| Rcout << as<IntegerVector>(Range(0, 10)) << std::endl;<br>
| or<br>
| Rcout << (IntegerVector)(Range(0, 10)) << std::endl;<br>
<br>
That can happen as template expressions can get in the way. Alternatives are<br>
maybe using Armadillo types for, again, just using a quick loop and printing<br>
elements.<br>
<br>
Rcpp has a lot of functions. But it doesn't have "all of R's functions" and<br>
should not be seen as aiming for that.<br>
<br>
Dirk<br>
<br>
-- <br>
<a href="https://mailtrack.io/trace/link/6980bfa152de9cac3c6fdf921fa97bf34670a814?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2Fmailtrack.io%2Ftrace%2Flink%2Fec16eaacf00108f6b925d8cd55d469ea736d3313%3Furl%3Dhttps*3A*2F*2Fdirk.eddelbuettel.com%26userId%3D3785237%26signature%3D5ff5161e5ff16475__%3BJSUl!!DZ3fjg!oa0yWHu4WaDeqycuBEcPRuw3vEvJrYARPPIAzJNsnxdet6loFCJ7O95nLR4BxG2v_1M%24&userId=3785237&signature=6c0196f400190f18" target="_blank">https://dirk.eddelbuettel.com</a>
 | @eddelbuettel | <a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a><u></u><u></u></p>
</blockquote>
</div>
<p class="MsoNormal"><span style="border:1pt solid windowtext;padding:0in"><img border="0" width="32" height="32" style="width: 0.3333in; height: 0.3333in;" id="gmail-m_7169566865209700612_x0000_i1025" alt="Image removed by sender."></span><u></u><u></u></p>
</div>
</div>
</div>

</blockquote></div><img width="0" height="0" class="mailtrack-img" alt="" style="display:flex" src="https://mailtrack.io/trace/mail/4d78edbf9fdf1b17844e656c63004cd9db6d815f.png?u=3785237"></div>