【问题标题】:Assigning a range of values to a macro为宏分配一系列值
【发布时间】:2014-11-04 15:54:23
【问题描述】:

我正在尝试使用 for 循环重命名变量列表。

我的代码如下所示:

local x 99 00 01 02 03 04 05 06 07 08 09 10 11 12
local k  2 4 6 8 10 12 14 16 18 20 22 24 26 28
local n: word count `x'

forvalues i = 1 / `n' {
    local a : word `i' of `x'
    local b : word `i' of `k'
    rename v`b' num`a'
}

我想知道是否可以为宏 k 分配范围而无需手动编写。请注意,两个值之间的增量不是一。

【问题讨论】:

  • 你还没有关闭你之前开始的话题。接受答案会给你一些声誉。

标签: stata stata-macros


【解决方案1】:

在您的情况下,您只需要原始后缀 2(2)28,因此将 1(1)14 加倍就足够了。否则help tokenize

local x 99 00 01 02 03 04 05 06 07 08 09 10 11 12
tokenize "`x'"
local n: word count `x'
forvalues i = 1/`n' {
    local I = 2 * `i' 
    rename v`I' num``i'' 
}

其他算术级数同样简单。例如,3(2)... 是

    local I = 2 * `i' + 1 

【讨论】:

  • 抱歉,我无法结束最后一个问题。我确实看过标记化。但我不知道如果增量或起始值不同,我将如何做到这一点。例如,如果我想在我的宏中使用值 3、5、7..,我应该怎么做。谢谢
猜你喜欢
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-19
  • 2021-12-17
  • 2020-08-19
相关资源
最近更新 更多