Я сделал список имен переменных и хотите проверить, какие переменные я исключены. Последняя строка моей догадки не работает, потому что r(varlist)
не имя макроса:используя обратный список макросов с `: список» синтаксис
input abc bca cba
1 1 1
end
global mykeeps abc cba
ds
di "`: list local(r(varlist)) - global(mykeeps)'"
Я знаю, что я мог бы сделать неуклюжий три лайнера здесь:
local rvarlist "`r(varlist)'"
di "`: list rvarlist - global(mykeeps)'"
macro drop rvarlist
Я прошу, если есть более краткий (или иначе лучший) способ.
Я просмотрел документацию на help macrolists
и help return list
.
Спасибо, Роберто! 'unab' и пакет' findname' выглядит очень удобно. Я надеялся, что макросы «r-class» имеют некоторые секретные имена макросов, которые можно просто подключить. В конце концов, это макросы ... Кстати, часть неуклюжести, которую я вижу в моем исходном коде, количество разделителей (круглые скобки и кавычки), а не только дополнительные строки. – Frank
Вы также можете использовать 'local rvarlist = r (varlist)' и сохранять кавычки в исходном коде. –
Что касается моего последнего комментария: Я прочитал «Ссылаясь на г (макро) без кавычек никогда не является хорошей идеей, эта функция была включена только для полноты». См. ** [R] ** сохраненные результаты, которые содержат интересную информацию. –