Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Abhimanyu Arora <abhimanyu.arora1987@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: macro compound double quotes |
Date | Wed, 11 Apr 2012 08:24:04 +0200 |
Thanks very much indeed for the insights, Matthew and Elan. Cheers Abhimanyu On Tue, Apr 10, 2012 at 8:07 PM, Cohen, Elan <cohened@upmc.edu> wrote: > -mac list _inclcities- should shed some light on the issue. The only true spaces that Stata is maintaining are those within quotes. > -di `countcity'- results in 5 because of the 4 spaces within city names (hence creating 5 "words"). > > HTH, > > - Elan > > > -----Original Message----- > From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Matthew White > Sent: Tuesday, April 10, 2012 13:56 > To: statalist@hsphsun2.harvard.edu > Subject: Re: st: macro compound double quotes > > Hi Abhimanyu, > > -help extended_fcn- notes: > > word count string returns the number of words in string. A token is a > word (characters separated by spaces) or set of words enclosed in > quotes. Do not enclose string in double quotes because word count > will return 1. > > Since in both cases the local was enclosed by double quotes, I'd > expect a result of 1. Using Stata 11.2 SE, I ran the following: > > loc inclcities `"`"Accra"' `"Addis Ababa"' `"Almaty"' `"Antananarivo"' > `"Bamako"' `"Bangkok"' `"Beijing"' `"Bishkek"' `"Calcutta"' > `"Colombo"' `"Conakry"' `"Dakar"' `"Dar es Salaam"' `"Delhi"' > `"Dhaka"' `"Dushanbe"' `"Hanoi"' `"Harare"' `"Islamabad"' `"Jakarta"' > `"Johannesburg"' `"Kabul"' `"Kampala"' `"Karachi"' `"Kathmandu"' > `"Khartoum"' `"Kinshasa"' `"Lagos"' `"Lhasa"' `"Lomé"' `"Luanda"' > `"Lusaka"' `"Manila"' `"Maputo"' `"Mogadishu"' `"Mumbai"' `"Nairobi"' > `"Niamey"' `"Phnom Penh"' `"Rangoon"' `"Saigon"' `"Ulan Bator"' > `"Vientiane"' `"Yaounde"'"' > > loc countcity : word count `inclcities' > di `countcity' > > loc countcity : word count `"`inclcities'"' > di `countcity' > > loc countcity : word count "`inclcities" > di `countcity' > > Resulting in: > > . loc inclcities `"`"Accra"' `"Addis Ababa"' `"Almaty"' > `"Antananarivo"' `"Bamako"' `"Bangkok"' `"Beijing"' `"Bishkek"' > `"Calcutta"' `"Colombo"' `"Conakry"' `"Dakar"' `"Dar es Salaam"' >> `"Delhi"' `"Dhaka"' `"Dushanbe"' `"Hanoi"' `"Harare"' `"Islamabad"' `"Jakarta"' `"Johannesburg"' `"Kabul"' `"Kampala"' `"Karachi"' `"Kathmandu"' `"Khartoum"' `"Kinshasa"' `"Lagos"' >> `"Lhasa"' `"Lomé"' `"Luanda"' `"Lusaka"' `"Manila"' `"Maputo"' `"Mogadishu"' `"Mumbai"' `"Nairobi"' `"Niamey"' `"Phnom Penh"' `"Rangoon"' `"Saigon"' `"Ulan Bator"' `"Vientiane"' `"Ya >> ounde"'"' > > . > . loc countcity : word count `inclcities' > > . di `countcity' > 44 > > . > . loc countcity : word count `"`inclcities'"' > > . di `countcity' > 5 > > . > . loc countcity : word count "`inclcities" > > . di `countcity' > 1 > > The first and third results are expected, but I'm confused by the > second. The following seems to show that Stata is coming up against > some kind of limit: > > loc word1 : word 1 of `"`inclcities'"' > di `"`word1'"' > > Another example. The following returns 4 when 2 is expected: > > mata: st_local("x", "x" * 600 + " " + "x" * 600) > loc wc : word count `x' > di `wc' > > All that said, none of this should be a problem for you as long as you > don't enclose `inclcities' by double quotes. > > Best, > Matt > > On Tue, Apr 10, 2012 at 1:12 PM, Abhimanyu Arora > <abhimanyu.arora1987@gmail.com> wrote: >> As a follow up I managed to find the right answer (by hit and trial) >> >> local temp1:list clean inclcities >> local countcity:word count `temp1' >> di `countcity' >> >> So it seems that unless the elements of a macro are minimally adorned, >> stata doesn't parse the spaces between the tokens (even if they are >> distinguished by compound double quotes) >> >> Cheers >> Abhimanyu >> >> >> On Tue, Apr 10, 2012 at 6:51 PM, Abhimanyu Arora >> <abhimanyu.arora1987@gmail.com> wrote: >>> Dear statalist >>> I have been trying to understand this phenomenon >>> >>> http://screencast.com/t/m6fGA8g9lxfX >>> >>> From what I have read in the manuals, the compound double quotes help >>> stata distinguish the tokens better when the macros themselves contain >>> quotes. So isn't the first syntax more appropriate? >>> But even then, the number returned when the second syntax is used >>> doesn't seem to be correct. >>> >>> Many thanks and best regards >>> Abhimanyu >>> * >>> * 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/ > > > > -- > Matthew White > Data Coordinator > Innovations for Poverty Action > 101 Whitney Avenue, New Haven, CT 06510 USA > +1 434-305-9861 > www.poverty-action.org > > * > * 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/