我最近一直在与Stata合作进行一些统计数据,但并不喜欢它。

在我看来,这是一种“适当”的编程语言:尤其是我没有 思考 有一种循环的方法,直到满足条件。

我的感觉是对的,还是Stata真的很完整?

有帮助吗?

解决方案

我以前从未听说过Stata,但网页吹嘘它具有”如果,“ 和 ”循环和分支".

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

我不知道什么 “适当”的编程语言 意思是,但乍一看,它肯定是图灵完整的。

其他提示

您可以使用它构建网页或GUI的“正确”编程语言?当然不是。但这有点极端。您当然可以使用.ado和.do文件编写循环;我想说的是图灵完成。

@eric.a.booth:我认为您的榜样很奇怪。我不确定我曾经见过 while { ... } else {...}

另外,请注意,在运行该循环之前,Stata不会测试循环,并且会允许自己陷入无限循环中。

local x = 0
while `x'<5 {
   display `x' / 2
   local ++x
}

虽然您可以使用-while-,-if,-else-命令执行循环直至满足条件,但在Stata中,使用-foreach-或-forvalues-循环通常是一个更好的主意。
因此,而不是说:

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

或者

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

通常要做的更好(更直观):

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

- 无-if-,-else-或-break-条件。有关详细信息,请参见-shelp forvalues-或-shelp foreach-- help foreach-。


^注意:我的原始帖子中的while-else循环被删除了 - 谢谢,基思(Keith)。 -else -part仅针对if {] else {}循环示例。无论如何,我的帖子的重点不是建议使用一段时间/否则,或者/否则循环,这是 - foreach - / - forvalues-通常是首选方法。

Stata的 ado 语言具有所有通常的条件陈述:

但是,重要的是不要混淆两者:

此外,Stata的 ado 语言循环结构包括:

Mata, ,Stata的矩阵编程语言也支持:

因此,两个Stata的 adomata 编程语言似乎满足了图灵完整的特征标准。

重要的是要注意,这些是 不是 一般编程语言, ,但成熟 统计语言.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top