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: really silly question


From   Scott Talkington <[email protected]>
To   [email protected]
Subject   Re: st: really silly question
Date   Tue, 08 Mar 2011 14:15:24 -0500

Thanks. I got around the need for interaction by creating arguments. I've been doing a lot of repetitive commands lately and thought I could save a bit of time by creating an interactive program.


On 3/8/2011 9:03 AM, Eric Booth wrote:
<>

I read Scott's question a different way.  I thought Scott was asking for a way to write a (interactive) program that runs some command (here -tab- is his example) repeatedly, but asking for user input (of two variables x and y) in the command window each time until the user says stop. The way I know to do this is by using -display- with the 'request()' option (see -help display-).  So, Scott's program might look like:

**************!
cap program drop rerun
program def rerun
syntax varlist(min=2 max=2 numeric)
token `"`varlist'"'
tab `1' `2', col  V w nokey miss
noi di `"Enter 2 more vars to -tab- (or type STOP to exit program):"', _request(answer)
if `"$answer"'=="STOP" exit
unab totab: $answer
rerun `totab'
end
**********
*where the user would run from the command line:

sysuse auto, clear

keep in 1/10   //to keep the tab results manageable

rerun for rep78
	*user input:  turn rep
	*user input:   price for
	*and so on....
	*user input:  STOP
**************!
I'm not sure why Scott would want a program that does this (maybe it's for some kind of interactive demo of the command window for students, he wants something like "display foo, _request(bar)" for a part of another program he's writing,  or he's working from a terminal/interactive Stata session and doesn't want to go back to the do-file to create -tab- results (?)), but it's also worth mentioning that this is all much easier from a do-file where he could use something like:

*******
loc myvars  rep78 for
loc myvars2  turn trunk price mpg
foreach v in `myvars' {
	foreach m in `myvars2' {
		tab `m' `v', col  V w nokey miss
		}
	}
*******
and just manipulate the local myvar lists.

- Eric
__
Eric A. Booth
Public Policy Research Institute
Texas A&M University
[email protected]
Office: +979.845.6754


On Mar 7, 2011, at 8:46 PM, Scott Talkington wrote:

The stuff that stumps me in stata is usually something so simple that it's impossible to find a help file or a faq that deals with it in simple terms.

I want to write a program that obtains a variable name from keyboard input and then executes a series of commands on that variable.  This should be pretty simple programming but I can't find a simple description of it.

lets say I want to fill a local variable `x' with one variable name and a local variable `y' with another variable name than then execute the command

.tab `x' `y'

and then at the end of the loop it just stops and waits for the keyboard input again

Isn't there a simple and obvious way to do this?  Or is it so obvious that it's never mentioned?  It's driving me nuts.
*
*   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