如何在Stata中创建重复值的numlist

时间:2017-09-09 15:34:35

标签: stata

我有两个本地值:ab。我需要一个包含b a份副本的numlist。下面的工作都没有(我认为我理解的第一个,但我不理解第二个,因为我认为display扩展宏函数负责smcl的所有处理。

. numlist "{dup `b':`a'}"
invalid numlist

. local x: display "{dup `b':`a'}"
. numlist "`x'"
invalid numlist

如何创建b的{​​{1}}次复制的数量列表?

3 个答案:

答案 0 :(得分:2)

SelectedItem支持<DataGridTemplateColumn Header="Unit"> <DataGridTemplateColumn.CellTemplate> <DataTemplate DataType="local:ResultModel"> <ComboBox DisplayMemberPath="Name" ItemsSource="{Binding Path=Units}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> 语法,但下划线是必不可少的,任何花括号(大括号)都是多余的或困难的来源。这更接近一些SMCL语法,但与它完全不同。

您也可以使用SMCL语法。

这是一些技巧:

第一对示例显示我们需要复制一个结束(或前导)空格以及任何所需的文本;否则我们得不到我们想要的东西。

display

我们也可以将结果放在本地宏中。幸好。如果我们解析它,那么无知的空格将被忽略。请注意,就我而言,_dup()也会显示与问题无关的其他内容。

. di _dup(10) "42 "
42 42 42 42 42 42 42 42 42 42 

. di _dup(10) "42"
42424242424242424242

这也有效:

macro list

这仍然存在使用. local wanted : di _dup(10) "42 " . di "`wanted'" 42 42 42 42 42 42 42 42 42 42 . tokenize "`wanted'" . mac li _10: 42 _9: 42 _8: 42 _7: 42 _6: 42 _5: 42 _4: 42 _3: 42 _2: 42 _1: 42 _wanted: 42 42 42 42 42 42 42 42 42 42 原始语法出了什么问题的问题。我的解释是. di "{dup 10:42 }" 42 42 42 42 42 42 42 42 42 42 . local wanted : di "{dup 10:42 }" . di "`wanted'" 42 42 42 42 42 42 42 42 42 42 只是不了解SMCL指令,隐藏SMCL的解决方法并不比这里的任何解决方案容易。没有理由以任何方式使用numlist,否则可以实现元素的重复。

答案 1 :(得分:1)

我假设短语“包含b个副本的numlist”是指:您有一些本地宏a,您希望将其复制b次并将输出存储为列表(另一个本地宏)。

以下是数字a ...

的示例
local a = 4
local b = 6
local c 
forval i = 1/`b' {
  local c `c' `a'
}
di "`c'"

4 4 4 4 4 4

...和字符串a

local a = "copy_me!"
local b = 6
local c = ""
forval i = 1/`b' {
  local c `c' `a'
}
di "`c'"

copy_me! copy_me! copy_me! copy_me! copy_me! copy_me!

Stata中几乎所有基本内容的完美材料,包括使用本地宏:A little bit of Stata programming goes along way (by CF Baum)(针对您的案例,第5页)。

答案 2 :(得分:0)

好的,再次尝试一下,这似乎有效:

. local c = ""
. forvalues i = 1/`b' { 
.  local c = "`c'" + " `a'"
.  }
. numlist "`c'"

我仍然对别人的答案感兴趣。