5

私は最近、Stata でいくつかの統計作業を行っていますが、あまり楽しんでいません。

「適切な」プログラミング言語のようには感じません。特に、条件が満たされるまでループする方法はないと思います。

私の感覚は正しいのでしょうか、それとも Stata は本当にチューリング完全なのでしょうか?

4

5 に答える 5

3

Stata のことは聞いたことがありませんが、ウェブページでは「if、while」と「ループと分岐」があると自慢しています。

Wikibooks には次の例があります。

local k = 1
file open myfile using toto.txt, read text
file read myfile line
while r(eof) == 0 {
    local k = `k' + 1
    di "`k' `line'"
    file read myfile line
    }
file close myfile

「適切な」プログラミング言語が何を意味するのかはわかりませんが、一見するとチューリング完全であるように見えます。

于 2010-12-09T07:00:25.403 に答える
1

それを使ってウェブページやGUIを構築できるという意味での「適切な」プログラミング言語?もちろん違います。しかし、それは少し極端です。確かに、.adoファイルと.doファイルを使用してループを作成できます。チューリング完全だと思います。

于 2010-12-11T06:43:43.490 に答える
0

@eric.a.booth: あなたの例は奇妙だと思います。今まで見たことがないwhile { ... } else {...}

また、Stata は実行前にループをテストせず、無限ループに陥る可能性があることに注意してください。

local x = 0
while `x'<5 {
   display `x' / 2
   local ++x
}
于 2010-12-20T23:11:40.463 に答える
0

-while-、-if、-else- コマンドを使用して条件が満たされるまでループを実行できますが、通常、代わりに -foreach- または -forvalues- ループを使用することを Stata でお勧めします。
したがって、次のように言う代わりに:

while "`1'" != "" {
<do something>
} 

また

if "`a'" == "" {
<do something>
}
else {
<do something else>
}

通常は、代わりに次のことを行う方が適切です (そしてより直感的です)。

forvalues x = 1/100 {
<do something>
}

-- -if-、-else-、または -break- 条件は必要ありません。詳細については、Stata の -help forvalues- または -help foreach- を参照してください。


^注: 元の投稿の while-else ループは削除されました。キースさん、ご指摘ありがとうございます。-else- 部分は、if{] else{} ループの例のみを対象としていました。とにかく、私の投稿のポイントは、while/else または if/else ループの使用を提案することではなく、通常は -foreach-/-forvalues- が推奨されるアプローチであるということでした。

于 2010-12-16T05:04:01.903 に答える