如何使Stata在每个循环迭代中等待用户输入?
我的情况是,用户需要手动查看/编辑数据。我想一次向他们展示大量数据。我用一个循环来做这件事。我的问题是让循环等待用户在移动到下一个块之前说她已经完成了一个块 我试着设置更多,暂停,然后请求,但没有运气。以下是我使用一些虚假数据设置的示例:如何使Stata在每个循环迭代中等待用户输入?,stata,Stata,我的情况是,用户需要手动查看/编辑数据。我想一次向他们展示大量数据。我用一个循环来做这件事。我的问题是让循环等待用户在移动到下一个块之前说她已经完成了一个块 我试着设置更多,暂停,然后请求,但没有运气。以下是我使用一些虚假数据设置的示例: clear set obs 100 gen id = int( 5*uniform() ) gen var1 = uniform() levelsof id, local(ids) foreach id of local ids { edit
clear
set obs 100
gen id = int( 5*uniform() )
gen var1 = uniform()
levelsof id, local(ids)
foreach id of local ids {
edit if id == `id'
/*
pause,
wait for user to hit any key in
the Command Window before moving
to the next iteration
*/
}
根据尼克·考克斯的评论,以下是我的解决方案
clear
set obs 100
gen id = int( 5*uniform() )
gen var1 = uniform()
levelsof id, local(ids)
foreach id of local ids {
edit if id == `id'
* user must type _next_ in Command Window for next iteration
local cmd 0
while ("`cmd'" != "next") {
display _request(cmd)
local cmd "$cmd"
/* here's the trick: the edits (replace var1 = bla in bla)
are captured by _request(). I need to send the replace
command back to stata */
if ("`cmd'" != "next") {
`cmd'
}
}
}
很久没有做过类似的事情了,但是请参阅帮助以获取显示请求。