Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: st: RE: RE: RE: Undocumented limitation of describe (and hence -ds-) in Stata 10?


From   "Nick Cox" <[email protected]>
To   <[email protected]>
Subject   RE: st: RE: RE: RE: Undocumented limitation of describe (and hence -ds-) in Stata 10?
Date   Wed, 7 Apr 2010 10:49:56 +0100

Nick 
[email protected] 


-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Martin Weiss
Sent: 06 April 2010 21:02
To: [email protected]
Subject: RE: st: RE: RE: RE: Undocumented limitation of describe (and
hence -ds-) in Stata 10?


<>

"I don't have access to Nick's article, unfortunately, so I don't know
if 
he indicates where this is documented."


The article says that it is documented in [U], 18.3.4, where you would
find
the following:

" Stata's expression parser is limited to handling strings of 244
characters. Strings longer than that are truncated.
The copy operation ... is not limited-it can copy up to the maximum
length
of
a macro, which is currently 165,200 characters...", and it goes on to
state
that for Stata MP, there is virtually no limit. 




"I also don't see anything explaining why/how r(varlist) and other r() 
macros are sometimes treated like local macros and sometimes not. It's 
not obvious to me why the first command below is valid while the second 
is not:

local x "`r(varlist)'"
di `:length local r(varlist)'"


That is really because there are no "r() macros". -macro-s come into
being
in the way you show in the upper line of your code, and as explained in
-h
macro-. The lower line sets of a frantic search for a -local- of the
name
"r(varlist)" which cannot be found. Even if you tried to name a -local-
"r(varlist)", you would fail:

***
clear*
local r(varlist) hello good-bye
di "`r(varlist)'"
di "`r'"
***

BTW, where is the supposed place where r-results are treated like
-local-
-macro-s? -display- is very, very special, since it takes an
-expression- as
an argument, which brings out the contents of an r-result, whether you
derefernce or not (also see Nick`s
http://www.stata.com/statalist/archive/2010-01/msg00834.html):

***
sysuse auto, clear
su mpg
di r(mean)
di `r(mean)'
di "`r(mean)'"
***


HTH
Martin


-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Michael I.
Lichter
Sent: Dienstag, 6. April 2010 20:31
To: [email protected]
Subject: Re: st: RE: RE: RE: Undocumented limitation of describe (and
hence
-ds-) in Stata 10?

Thanks, Martin, that does solve my problem.

On the question of documentation, though, I don't see anything in the 
programmer's manual entry on macros regarding limitations on how many 
characters can be copied from one macro to another with the equals sign.

I don't have access to Nick's article, unfortunately, so I don't know if

he indicates where this is documented.

I also don't see anything explaining why/how r(varlist) and other r() 
macros are sometimes treated like local macros and sometimes not. It's 
not obvious to me why the first command below is valid while the second 
is not:

local x "`r(varlist)'"
di `:length local r(varlist)'

Thanks again.

Michael

Martin Weiss wrote:
> <>
>
> See also Nick`s
http://www.stata.com/statalist/archive/2006-11/msg00769.html
>
>
>
> HTH
> Martin
>
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Martin
Weiss
> Sent: Dienstag, 6. April 2010 19:16
> To: [email protected]
> Subject: st: RE: RE: Undocumented limitation of describe (and hence
-ds-)
in
> Stata 10?
>
>
> <>
>
>
> And "Beware the evaluating equal sign" (NJC parlance :-) ):
> http://www.stata-journal.com/article.html?article=pr0045
>
>
>
> *******
> clear
> forvalues i = 1/30{
>     gen byte testvar`i' = .
> }
> d, varlist
> di "`r(varlist)'"
> local x "`r(varlist)'"
> di `:length local x'
> ma di
> *******
>
>
> HTH
> Martin
>
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Martin
Weiss
> Sent: Dienstag, 6. April 2010 19:11
> To: [email protected]
> Subject: st: RE: Undocumented limitation of describe (and hence -ds-)
in
> Stata 10?
>
>
> <>
>
> Just say - di "`r(varlist)'"-, whether Stata 10 or 11...
>
>
> HTH
> Martin
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Michael I.
> Lichter
> Sent: Dienstag, 6. April 2010 19:06
> To: [email protected]
> Subject: st: Undocumented limitation of describe (and hence -ds-) in
Stata
> 10?
>
> I found out the hard way that the r(varlist) macro result returned by 
> -describe, varlist- (and hence -ds- and Nick Cox's -ds3-) is limited
to 
> 243 characters, at least on my computer running Stata 10. Is there a 
> Stata setting I need to change? The help page says something about 
> -maxvar-, but this doesn't seem like it should matter, and in any
event 
> doubling -maxvar- has on effect on this result. If this is not a 
> settings issue, has it been fixed in Stata 11? Thanks.
>
> -----
> clear
> forvalues i = 1/26 {
>     gen byte testvar`i' = .
> }
> d, varlist
> di r(varlist)
> local x = r(varlist)
> di `:length local x'
> -----
>
>   

-- 
Michael I. Lichter, Ph.D. <[email protected]>
Research Assistant Professor & NRSA Fellow
UB Department of Family Medicine / Primary Care Research Institute
UB Clinical Center, 462 Grider Street, Buffalo, NY 14215
Office: CC 126 / Phone: 716-898-4751 / FAX: 716-898-3536

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index