2014-02-06 50 views
1

我无法运行foreach循环。循环运行时没有错误,但没有输出。有人能告诉我他们认为可能会发生什么吗?提前谢谢了!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 
} 

UPDATE:

有趣的是,代码运行时我只需将它输入命令行,而不是从文件。做这样做,任何想法是什么可能会在那里?

+0

显示您本地'datafiles'的内容,以查看循环中会发生什么。在做这件事时用双引号括住你的本地(参见'help quotes')。为什么'insheet'两次?如果你不使用选项,为什么','在行末? –

+0

看起来你的本地是空的。 (你应该在你的文章中复制精确的输出,我们没有你的电脑/目录/文件。) –

+0

罗伯托谢谢你,本地看起来是这样的:。显示'数据文件' turnstile_100724.txtturnstile_100626.txtturnstile_100703.txtturnstile_100710.txtturnstile_100717.txt –

回答

1

调试的一些代码。 display在当地datafiles的内容,看看发生了什么事情进入死循环:

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

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

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

(代码中的注释部分不格式化好。)

2

需要注意的是local宏恰恰是这一点很重要即仅在本地定义和可见。

相同交互式会话

同一程序

一样来执行文件(或做文件编辑内容)

本地指

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

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

+0

谢谢尼克,那就是我失踪的!不知道关于这个的逻辑,但只是读起来,它运行完全按照你所说的。非常感激。 –