Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


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

Re: st: issue with forvalues/foreach


From   Rebecca Pope <rebecca.a.pope@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: issue with forvalues/foreach
Date   Fri, 14 Dec 2012 09:17:31 -0600

The following works fine for me, so I can't comment on why -cd- did
not work for you (or Ben). This seems like an odd quirk across
machines. I'm running Windows 7; I'm not sure why or if that matters.

cd "C:\Users\poper\Documents\Statalist"
sysuse auto, clear
rename mpg y0
rename weight y1
save alb.dta, replace

sysuse auto, clear
rename mpg y0
rename weight y1
save arm, replace

foreach i in alb arm {
  use "`i'.dta", clear
  sum y0, d
  local pline = 0.5 * r(p50)
  replace y0 = y0 / `pline'
  replace y1 = y1 / `pline'
  save "`i'.dta", replace
}

As does Billy's original suggestion for using "/" in place of "\". You
also said this did not work. Again, I'm not sure why, but this seems
to be an interesting phenomenon.

foreach i in alb arm {
  use "C:/Users/poper/Documents/Statalist/`i'.dta", clear
  sum y0, d
  local pline = 0.5 * r(p50)
  replace y0 = y0 / `pline'
  replace y1 = y1 / `pline'
  save "C:/Users/poper/Documents/Statalist/`i'.dta", replace
}

Try creating a test directory & submitting either the code that I've
posted or what Ben posted that we have verified works & see if it runs
on your computer. Just trying to isolate the problem...

Rebecca



On Fri, Dec 14, 2012 at 8:57 AM, William Buchanan
<william@williambuchanan.net> wrote:
> Hi Ivica,
>
> In the first example that I had sent you I enclosed the file path in compound double quotes (you can find information on quotes in Stata in [U] 18.3.5 or type -h quotes-).  Have you tried running your syntax with -set trace on-? Given the error message that you provided, Stata doesn't seem to be expanding the macro `i' correctly .  I've personally ran into numerous problems using the "\" character in file paths and have made it a habit to use "/" on MAC and Windows OS (since they are interpreted the same way).  Try enclosing the file path with compound double quotes and/or running the syntax with -set trace on- and see if that helps.
>
> HTH,
> Billy
>
>
> On Dec 14, 2012, at 6:38 AM, Rubil Ivica wrote:
>
>> Nick,
>> here is one code that I tried to run recently.
>>
>>
>> foreach i in alb arm aze bel bih bul cro geo hun kaz kyr lat lit mol mon
>> pol rom ser taj ukr {
>>
>> use "F:\nov_dot\decomposition\data\`i'.dta", clear
>> sum y0, d
>> local pline = 0.5 * r(p50)
>> replace y0 = y0 / `pline'
>> replace y1 = y1 / `pline'
>> save "F:\nov_dot\decomposition\data\`i'.dta", replace
>> clear
>>
>> }
>>
>> And what Stata gives me is:
>>
>> file F:\nov_dot\decomposition\data`i'.dta not found
>> r(601);
>>
>> end of do-file
>>
>> r(601);
>>
>>
>> Strangely, Stata seems not to recognize the last "\" in the first line
>> within the loop.
>>
>> Again, this happens whenever I have a path within a loop, be it
>> -forvalues- or -foreach-.
>>
>> Hope you can help.
>>
>> Ivica
>>
>>
>>
>> --
>> Ivica Rubil
>> Ekonomski institut || The Institute of Economics, Zagreb
>> Trg J. F. Kennedyja 7, 10 000 Zagreb, Croatia
>> tel. +385-1-2362-269 || fax. +385-1-2335-165
>> irubil@eizg.hr || www.eizg.hr
>>
>>
>> -----Original Message-----
>> From: owner-statalist@hsphsun2.harvard.edu
>> [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Nick Cox
>> Sent: 14. prosinac 2012 15:17
>> To: statalist@hsphsun2.harvard.edu
>> Subject: Re: st: issue with forvalues/foreach
>>
>> Sorry, but your question remains very difficult to answer. But know
>> that the macro used in the -forval- or -foreach- statement is not
>> visible beyond the loop.
>>
>> Nick
>>
>> On 14 Dec 2012, at 13:27, "Rubil Ivica" <irubil@eizg.hr> wrote:
>>
>>> I didn't send the actual code because it is long.
>>> The same problem appears whenever I have a path within the -forvalues-
>>> or -foreach- loop.
>>> The files are certainly in the folders that I am referring to in
>>> paths.
>>>
>>>
>>>
>>>
>>> --
>>> Ivica Rubil
>>> Ekonomski institut || The Institute of Economics, Zagreb
>>> Trg J. F. Kennedyja 7, 10 000 Zagreb, Croatia
>>> tel. +385-1-2362-269 || fax. +385-1-2335-165
>>> irubil@eizg.hr || www.eizg.hr
>>>
>>> -----Original Message-----
>>> From: owner-statalist@hsphsun2.harvard.edu
>>> [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Rebecca
>>> Pope
>>> Sent: 13. prosinac 2012 17:52
>>> To: statalist@hsphsun2.harvard.edu
>>> Subject: Re: st: issue with forvalues/foreach
>>>
>>> Try this, since it looks like your files are all in the same
>>> directory:
>>> cd "F:\project\data\"
>>> forval i=1/30 {
>>>  use `"dataset_`i'.dta"', clear
>>>  compress var1 var2
>>>  save `"dataset_`i'.dta"', replace
>>> }
>>>
>>> Note on your -foreach- loop, you tell Stata that "country" is the
>>> macro. Therefore, your code should say:
>>> foreach country in croatia albania {
>>>  use "F:\project\data\dataset_`country'.dta", clear
>>>  compress var1 var2
>>>  save "F:\project\data\dataset_`country'.dta", replace
>>> }
>>>
>>> I also changed the colon in the save to an underscore, since I assume
>>> that is what you meant.
>>>
>>> If that doesn't work, please post the code you are really submitting.
>>> Perhaps there is something particular to it that isn't captured by
>>> your example.
>>>
>>> Best,
>>> Rebecca
>>>
>>>
>>> On Thu, Dec 13, 2012 at 10:36 AM, Rubil Ivica <irubil@eizg.hr> wrote:
>>>> William, what your suggested does not work either, even after
>>>> sustituting "/" for "\".
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Ivica Rubil
>>>> Ekonomski institut || The Institute of Economics, Zagreb
>>>> Trg J. F. Kennedyja 7, 10 000 Zagreb, Croatia
>>>> tel. +385-1-2362-269 || fax. +385-1-2335-165
>>>> irubil@eizg.hr || www.eizg.hr
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: owner-statalist@hsphsun2.harvard.edu
>>>> [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of William
>>>> Buchanan
>>>> Sent: 13. prosinac 2012 17:28
>>>> To: statalist@hsphsun2.harvard.edu
>>>> Subject: Re: st: issue with forvalues/foreach
>>>>
>>>> Hi Ivica,
>>>>
>>>> Try:
>>>>
>>>> forv i = 1/30 {
>>>>       use `"F:/project/data/dataset_`i'"', clear
>>>>       compress var1 var2
>>>>       save `"F:/project/data/dataset_`i'b"', replace
>>>>       clear
>>>> }
>>>>
>>>> It's probably a good idea not to permanently modify your data files
>>> (so
>>>> adding "b" to the end of the filename should make it easier to
>>>> distinguish the two).  Also notice the use of "/" instead of "\" in
>>> the
>>>> file path.  Using the "/" character will work on all platforms, and
>>>> avoids some of the problems that you faced.
>>>>
>>>> HTH,
>>>> Billy
>>>>
>>>>
>>>> On Dec 13, 2012, at 8:21 AM, Rubil Ivica wrote:
>>>>
>>>>> Dear Statalisters:
>>>>>
>>>>> When I to run the following (two artificial examples just to
>>>> illustrate
>>>>> the issue)
>>>>>
>>>>> forvalues i = 1(1)30 {
>>>>>     use "F:\project\data\dataset_`i'.dta", clear
>>>>>     compress var1 var2
>>>>>     save "F:\project\data\dataset_`i'.dta", replace
>>>>>     clear
>>>>> }
>>>>>
>>>>> or for instance
>>>>>
>>>>> foreach country in croatia albania {
>>>>>     use "F:\project\data\dataset_`i'.dta", clear
>>>>>     compress var1 var2
>>>>>     save "F:\project\data\dataset:`i'.dta", replace
>>>>>     clear
>>>>> }
>>>>>
>>>>> Stata returns
>>>>>
>>>>> file F:\project\data`i'.dta not found
>>>>>
>>>>> It seems strange to me that Stata "forgets" the exactly specified
>>>> path:
>>>>> "F:\project\data\dataset_`i'.dta" in the first example
>>>>> and
>>>>> "F:\project\data\dataset_`i'.dta" in the second example.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Ivica Rubil
>>>>> Ekonomski institut || The Institute of Economics, Zagreb
>>>>> Trg J. F. Kennedyja 7, 10 000 Zagreb, Croatia
>>>>> tel. +385-1-2362-269 || fax. +385-1-2335-165
>>>>> irubil@eizg.hr || www.eizg.hr
>>>>>
>>>>>
>>>>> *
>>>>> *   For searches and help try:
>>>>> *   http://www.stata.com/help.cgi?search
>>>>> *   http://www.stata.com/support/faqs/resources/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/faqs/resources/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/faqs/resources/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/faqs/resources/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/faqs/resources/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/faqs/resources/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/faqs/resources/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/faqs/resources/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/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index