如何使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'
        }
    }
}

很久没有做过类似的事情了,但是请参阅帮助以获取显示请求。