2014-11-11 3 views
1

я наткнулся немного головоломки с местными жителями, витринных и котировки STATA .. В Рассмотрим следующий пример:Форматирование и отображение местных жителей в Stata

generate var1 = 54321 in 1 

local test: di %10.0gc var1[1] 

Почему вызов:

di "`test'" 

возвращение

54,321 

в то время как вызов:

di `test' 

показывает

54 321 

Что является причиной такого поведения?

ответ

4

Полная последовательность с

(1)

. di 54,321 
54 321 

(2)

. di "54,231" 
54,321 

display интерпретирует (1) в качестве инструкции для отображения два аргумента, один за другим. Вы получаете тот же результат с последней строкой, что и (сначала), локальный макрос test был оценен и (второй) display увидел результат оценки.

Разница, в которой указаны кавычки, заключается в том, что вы настаиваете на том, что аргумент является литеральной строкой. Вы получаете тот же результат с вашей первой командой display по тем же причинам, что и только что приведенные.

Вкратце, использование локальных макросов здесь совершенно случайно в отношении различий в результатах. display никогда не видит локальный макрос как таковой; он просто видит свое содержимое после оценки. Итак, то, что вы видите, полностью сводится к нюансам в том, что представлено display.

Обратите внимание, что, хотя вы можете использовать формат отображения при определении содержимого локального макроса, это заканчивает эту историю. Локальный не имеет прикрепленного формата, который придерживается его. Это просто строка (которая, естественно, может означать строку с числовыми символами).

+0

Спасибо, Ник - полезные комментарии; теперь все ясно. – radek

Смежные вопросы