<div dir="ltr">The way around it is to declare 'xx' in the parent scope, and then assign to it directly, e.g.<div><br></div><div><span style="font-family:arial,sans-serif;font-size:13px">// [[Rcpp::export]]</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">Rcpp::NumericVector f1(String typ){</span></div><div>  Rcpp::NumericVector xx;<br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">  if(typ=="nc"){</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">    xx = Rcpp::NumericVector(10);</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">  } else {</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">    xx = Rcpp::NumericVector(20);</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">  }</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">  return xx;</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">}</span><br style="font-family:arial,sans-serif;font-size:13px">
</div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><font face="arial, sans-serif">'Technically', the object 'xx' will be default initialized when declared like that, but the compiler can optimize that away.</font></div>
<div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">Cheers,</font></div><div><font face="arial, sans-serif">Kevin</font></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Thu, Feb 13, 2014 at 10:26 AM, Hideyoshi Maeda <span dir="ltr"><<a href="mailto:hideyoshi.maeda@gmail.com" target="_blank">hideyoshi.maeda@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
So I’m guessing there is no simple export outside of the {} function?<br>
<div class="HOEnZb"><div class="h5">On 13 Feb 2014, at 18:17, Dirk Eddelbuettel <<a href="mailto:edd@debian.org">edd@debian.org</a>> wrote:<br>
<br>
><br>
> On 13 February 2014 at 17:48, Hideyoshi Maeda wrote:<br>
> | Dear Rcpp-Devel list,<br>
> |<br>
> | I am relatively new to Rcpp and am struggling to work out why the following code does not compile.<br>
> |<br>
> | #include <Rcpp.h><br>
> | using namespace Rcpp;<br>
> |<br>
> | // [[Rcpp::export]]<br>
> | Rcpp::NumericVector f1(String typ){<br>
> |   if(typ=="nc"){<br>
> |     Rcpp::NumericVector xx(10);<br>
> |   } else {<br>
> |     Rcpp::NumericVector xx(20);<br>
> |   }<br>
> |   return xx;<br>
> | }<br>
><br>
> "Scope".<br>
><br>
> You create 'xx' inside the { } and it does not exist outside of those.<br>
><br>
> | Basically the function takes in a string input and if its has the value “nc” then it returns a zero string of length 10 and if it doesn’t then it should return a zero vector of length 20. I don’t quite understand why the above code works but the below code does. What do I need to do to make the above code work,  so that I can call xx after the if statement is done?<br>

> |<br>
> | #include <Rcpp.h><br>
> | using namespace Rcpp;<br>
> |<br>
> | // [[Rcpp::export]]<br>
> | Rcpp::NumericVector f1(String typ){<br>
> |   if(typ=="nc"){<br>
> |     Rcpp::NumericVector xx(10);<br>
> |     return xx;<br>
> |   } else {<br>
> |     Rcpp::NumericVector xx(20);<br>
> |     return xx;<br>
> |   }<br>
> | }<br>
><br>
> Try this. It uses RcppArmadillo which has a resize() member function.<br>
><br>
><br>
> // [[Rcpp::depends(RcppArmadillo)]]<br>
><br>
> #include <RcppArmadillo.h><br>
><br>
><br>
> // [[Rcpp::export]]<br>
> arma::colvec f1(std::string typ){<br>
>  arma::colvec xx;<br>
>  if (typ=="nc"){<br>
>    xx.resize(10);<br>
>  } else {<br>
>    xx.resize(20);<br>
>  }<br>
>  return xx;<br>
> }<br>
><br>
> Dirk<br>
><br>
> --<br>
> Dirk Eddelbuettel | <a href="mailto:edd@debian.org">edd@debian.org</a> | <a href="http://dirk.eddelbuettel.com" target="_blank">http://dirk.eddelbuettel.com</a><br>
<br>
_______________________________________________<br>
Rcpp-devel mailing list<br>
<a href="mailto:Rcpp-devel@lists.r-forge.r-project.org">Rcpp-devel@lists.r-forge.r-project.org</a><br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel</a><br>
</div></div></blockquote></div><br></div>