Saturday, September 1, 2012
Fun with Macros
* Stata can use macros in a manner that can be very creative.
* One use could be in a manner similar to that of functions in R.
* If we would like to find the value of y at different levels of x where y is defined as y=x^2
local x = 1
* This immediately evaluates the value of y
local y = `x'^2
di "`y' = " `y'
* Thus the following display will be the same as the previous one despite x changing in value
local x = 2
di "`y' = " `y'
* If on the other hand, we specify y as the following:
local y = "\`x'^2"
local x = 1
di "`y' = " `y'
local x = 2
di "`y' = " `y'
* Then thw two different displays are different because y is waiting to evaluate the x until the display command.
* We can do this with multiple locals
local z = "100/(\`y')"
local x = 1
di "`z' = " `z'
local x = 2
di "`z' = " `z'
* Globals work in an identical fassion
global a = "(\`z')^(\`x') - \`y'"
local x = 1
di "$a = " $a
local x = 2
di "$a = " $a
global b = "(\$a)*cos(\$a)"
local x = 1
di "$b = " $b
local x = 2
di "$b = " $b
# R uses functions in a standard manner for programmers
y = function(x) x^2
z = function(x) 100/y(x)
a = function(x) z(x)^x - y(x)
b = function(x) a(x)*cos(a(x))
y(1); y(2)
z(1); z(2)
a(1); a(2)
b(1); b(2)
# Produces the same results as above
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment