2017-05-11 7 views
0

Ich bin relativ neu zu schreiben Ado-Dateien in Stata und stieß auf ein Problem, für das ich keine Lösung finden kann.Stata Ado Syntax mit doppelten Anführungszeichen

Ich hätte gerne eine Option in meinem Programm, die twoway Option verwendet werden kann (siehe help twoway_options) und haben ein Problem bei der Verwendung von Anführungszeichen entweder mit nur Leerzeichen oder innerhalb von Unterbefehlen wie unten gezeigt.

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("")) 

Ich würde auch beachten Sie, dass mit dem syntax Befehl tut weg wird auch das Problem lösen, aber ich würde es eher halten und nicht den ganzen Befehl analysieren müssen.

Ist es möglich, den Befehl syntax so zu ändern, dass die beiden Befehle, die Fehler auslösen, funktionieren?

+0

Ich bin über eine zweite Lösung zusätzlich zu Nick's gestolpert, die für bestimmte Situationen besser sein könnte, anstatt "tw_opts (string)" zu verwenden, wenn man 'tw_opts (string asis)' verwendet, wird das resultierende lokale 'tw_opts' Eingabe wie von den Argumenten und in der Lage sein, irgendwelche der oben genannten auszuführen. –

+0

Gut, aber das war mein Punkt # 3. –

Antwort

0

Zwei Vorschläge und einen Kommentar:

1) Sie wollen keine twoway Optionen ermöglichen, mit dem Sie auf einen Graphen Befehl übergeben wird. Es ist am einfachsten, nur einen Platzhalter * in syntax zu verwenden und syntax (und in diesem Fall twoway) die ganze Arbeit zu machen.

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) Wie oben, der xlabel(" ") Anruf war unabhängig illegal. Sie werden wahrscheinlich von anderen Begriffen beeinflusst, wenn Sie daran denken, dass Stata Achsentitel als Achsenbeschriftungen bezeichnet. Bei Stata sind die Achsenbeschriftungen die einzelnen Textbeschriftungen, standardmäßig in twoway an verschiedenen numerischen Positionen auf den Achsen.

3) Bei anderen Problemen, die angeben, dass ein Optionsargument string asis das Strippen von Anführungszeichen verhindert.

+0

Danke für den Rat, du hast absolut recht Ich habe 'xtitle' als' xlab' vertippt. Ich würde auch für jeden, der später zu dieser Frage kommt, bemerken, dass der Platzhalter '*' sehr vielseitig ist und alle Argumente übernimmt, die nicht speziell in Ihrem 'syntax'-Befehl beschrieben sind, was ich beim Lesen der Dokumentation vermisste. Danke für die Hilfe Nick! –

Verwandte Themen