Dear Statalists,
I'm trying to replace negative numbers with their absolutes in a foreach loop over macro local levels. However, what works outside the loop (-15 -> 15) no longer works within the loop (-15 -> --15).
My example codes and results are as follows. Appreciate any advice!
****************************
* Outside a loop:
local item -15
dis `item'
if `item'<0{
local newname -`item'
}
dis `newname'
// result: -15
****************************
* Within a loop:
tempvar count_did2s
gen `count_did2s' = 0
// example local macro levels, actually generated from -levelsof-
local test_levels -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5
foreach item of local test_levels{
dis `item'
if `item' > 0{
local newname "Effect`item'"
dis "`newname'"
}
if `item' < 0{
dis `item'
local item2 -`item'
local newname "Pre`item2'"
dis "`newname'"
// result: Pre--15
}
if `count_did2s' == 0{
unab rename_list: "`newname'"
replace `count_did2s' = `count_did2s' + 1
}
if `count_did2s' >= 1{
local rename_list `rename_list' "`newname' "
}
}
dis `rename_list'
/*
Error:
"Pre--15 invalid name
r(198); */
Best,
Yuting
I'm trying to replace negative numbers with their absolutes in a foreach loop over macro local levels. However, what works outside the loop (-15 -> 15) no longer works within the loop (-15 -> --15).
My example codes and results are as follows. Appreciate any advice!
****************************
* Outside a loop:
local item -15
dis `item'
if `item'<0{
local newname -`item'
}
dis `newname'
// result: -15
****************************
* Within a loop:
tempvar count_did2s
gen `count_did2s' = 0
// example local macro levels, actually generated from -levelsof-
local test_levels -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5
foreach item of local test_levels{
dis `item'
if `item' > 0{
local newname "Effect`item'"
dis "`newname'"
}
if `item' < 0{
dis `item'
local item2 -`item'
local newname "Pre`item2'"
dis "`newname'"
// result: Pre--15
}
if `count_did2s' == 0{
unab rename_list: "`newname'"
replace `count_did2s' = `count_did2s' + 1
}
if `count_did2s' >= 1{
local rename_list `rename_list' "`newname' "
}
}
dis `rename_list'
/*
Error:
"Pre--15 invalid name
r(198); */
Best,
Yuting
Comment