【问题标题】:foreach loop running but not giving resultsforeach 循环运行但未给出结果
【发布时间】:2014-02-08 02:10:52
【问题描述】:

我在运行 foreach 循环时遇到问题。循环运行没有错误,但没有输出。有人能告诉我他们认为会发生什么吗?提前谢谢了!

代码如下:

cd "O:\RESEARCH\ikhilko\Subway Big Data project"
local datafiles : dir . files  "*.txt"

foreach file in `datafiles' {
insheet using `file', 
clear
insheet using `file',
drop v9-v43
save date1, replace
}

更新:

有趣的是,当我在命令行中键入代码时,代码就会运行,而不是从 .do 文件中执行,知道那里可能发生什么吗?

【问题讨论】:

  • display 本地datafiles 的内容,看看循环中发生了什么。执行此操作时用双引号将您的本地引号括起来(请参阅help quotes)。为什么insheet 两次?如果您不使用选项,为什么要在行尾添加,s?
  • 您的本地似乎是空的。 (您应该在帖子中复制准确的输出。我们没有您的 pc/dir/files。)
  • Roberto 谢谢你,本地看起来是这样的:。显示“数据文件”turnstile_100724.txtturnstile_100626.txtturnstile_100703.txtturnstile_100710.txtturnstile_100717.txt
  • 并运行您的命令会得到以下结果。显示"wordx'"'turnstile_100724.txt

标签: stata


【解决方案1】:

请务必注意,local 宏正是如此,即仅在本地定义和可见。

本地是指在内部

同一个交互式会话

同一个程序

相同的do文件(或do文件编辑器内容)

选择执行的do文件(或...)的相同部分

地方性似乎在咬你。在一个地方定义的本地宏在另一个地方不可见。如果宏不可见,本地宏引用将评估为缺失,即空字符串。

【讨论】:

  • 谢谢尼克,这就是我所缺少的!不知道这其中的逻辑,但只是阅读并完全按照您所说的那样运行。非常感谢。
【解决方案2】:

一些调试代码。 display 本地 datafiles 的内容,看看循环中发生了什么:

local datafiles : dir . files "*.txt"
display `"`datafiles'"'

local wordx : word 1 of `datafiles'
display `"`wordx'"'

foreach file in `datafiles' {
    display "`file'"
}

(代码在 cmets 部分的格式不好。)

【讨论】:

    猜你喜欢
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多