【问题标题】:Stata ado syntax with double quotes带双引号的 Stata ado 语法
【发布时间】:2017-05-13 00:46:06
【问题描述】:

我对在 Stata 中编写 ado 文件比较陌生,遇到了一个我找不到解决方案的问题。

我想在我的程序中有一个选项,它允许使用任何 twoway 选项(请参阅 help twoway_options)并且在使用引号时遇到问题,无论是仅包含空格还是在子命令中,如下所示。

sysuse gnp96, clear

capture prog drop adding_quotes
prog def adding_quotes 

    syntax [, tw_opts(string)]

    line gnp96 date, `tw_opts'

end

// throws error
adding_quotes, tw_opts(text(7000 97 "Middle Text"))
adding_quotes, tw_opts(xtitle(" "))

// runs
adding_quotes, tw_opts(text(7000 97 `""Middle Text""'))
adding_quotes, tw_opts(xtitle(""))

我还要注意,取消 syntax 命令也可以解决问题,但我宁愿保留它,而不必解析整个命令。

是否可以更改syntax 命令以使两个引发错误的命令起作用?

【问题讨论】:

  • 我偶然发现了第二个解决方案,除了尼克的解决方案,它在某些情况下可能更好,而不是使用 tw_opts(string) 如果使用 tw_opts(string asis),则生成的本地 tw_opts 将输入为来自参数并且能够运行上述任何一个。
  • 很好,但这是我的第三点。

标签: stata


【解决方案1】:

两个建议和一个评论:

1) 您希望允许任何twoway 选项,您将把这些选项传递给图形命令。最简单的方法是在syntax 中使用通配符* 并让syntax(在本例中为twoway)完成所有工作。

sysuse gnp96, clear

capture prog drop adding_quotes
prog def adding_quotes 
    syntax [, * ]
    line gnp96 date, `options'
end

adding_quotes, text(7000 97 "Middle Text") 
adding_quotes, xtitle(" ")

2) 如上所述,xlabel(" ") 调用无论如何都是非法的。您可能受到其他地方术语的影响,将 Stata 称为轴标题的内容视为轴标签。对于 Stata,轴标签是单独的文本标签,默认情况下在 twoway 中位于轴上的各个数字位置。

3) 在指定选项参数为string asis 的其他问题中,禁止去除双引号。

【讨论】:

  • 感谢您的建议,您完全正确,我将 xtitle 输入错误为 xlab。我还要向稍后提出此问题的任何人注意,通配符 * 非常通用,并且将采用您的 syntax 命令中未明确列出的所有参数,我在阅读文档时错过了这些参数。感谢尼克的帮助!
猜你喜欢
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多