标量在Stata中显示为缺少的值
我有一些代码在一些嵌套的标量在Stata中显示为缺少的值,stata,Stata,我有一些代码在一些嵌套的foreach循环中循环数值,以模拟条件求和。不幸的是,这似乎创建了一个缺少的值,我可以使用 display `var' 我尝试在Stata中搜索+=运算符,但没有找到。 我也对这种行为感到困惑。 我尝试将10赋值给topTerm,而不是0,以查看变量是否已被分解,但事实并非如此 tempname topTerm bottomTerm controlledContrast scalar `topTerm' = 0 foreach … numlist { forea
foreach
循环中循环数值,以模拟条件求和。不幸的是,这似乎创建了一个缺少的值,我可以使用
display `var'
我尝试在Stata中搜索+=
运算符,但没有找到。
我也对这种行为感到困惑。
我尝试将10赋值给topTerm
,而不是0,以查看变量是否已被分解,但事实并非如此
tempname topTerm bottomTerm controlledContrast
scalar `topTerm' = 0
foreach … numlist {
foreach … numlist {
foreach … numlist {
display `delta', `topTerm'
scalar `topTerm'= `topTerm' + `delta'*`cc_difference_in_means'*`cc_vet_n'
display `topTerm'
}}}
编辑:尝试使用本地/全局,但仍获取缺少的值。似乎是一个范围的问题,虽然我认为本地会解决这个问题,所以我真的很困惑
请注意,这在命令行中起作用:
local x = 10
local x = `x' + 10
display `x'
>> 20
我只能想象你想做什么。使用局部变量,以下操作有效:
local topterm 0
local delta 5
local cc_difference_in_means 10
local cc_vet_n 25
foreach num1 of numlist 1/10 {
local topterm = `topterm' + `delta' * `cc_difference_in_means' * `cc_vet_n'
display `topterm'
}
尽管我承认除了“本地人/全球人”之外,我不使用其他任何东西,但以下内容也适用。它与您的设置类似
tempname topTerm
scalar `topTerm' = 0
disp `topTerm'
foreach num1 of numlist 1/10 {
scalar `topTerm' = `topTerm' + 5
display `topTerm'
}
但您也可以这样做,以获得相同的(显示的)结果:
再说一遍,我看不出你想干什么。我只能想象你想干什么。使用局部变量,以下操作有效:
local topterm 0
local delta 5
local cc_difference_in_means 10
local cc_vet_n 25
foreach num1 of numlist 1/10 {
local topterm = `topterm' + `delta' * `cc_difference_in_means' * `cc_vet_n'
display `topterm'
}
尽管我承认除了“本地人/全球人”之外,我不使用其他任何东西,但以下内容也适用。它与您的设置类似
tempname topTerm
scalar `topTerm' = 0
disp `topTerm'
foreach num1 of numlist 1/10 {
scalar `topTerm' = `topTerm' + 5
display `topTerm'
}
但您也可以这样做,以获得相同的(显示的)结果:
同样,我不明白你的目的是什么。@refp16在这种情况下有一个很好的答案,但你的问题归结为
- Stata没有
运算符。这也许是一个惊喜,因为斯塔塔显然喜欢类似C的结构,但这在这里并不重要<代码>+=允许您稍微缩短代码,但不会改变您的问题+=
- 对于缺失的总和,至少有一个输入到该总和的值缺失是必要的(且充分的),这反过来可能包括(a)缺失(b)你做了一些事情,比如取负数的平方根(c)你指的是不存在的东西,哪个Stata评估为缺失
显示添加的每个术语,并找出缺少的术语。您似乎正在这样做,那么为什么您不能识别缺少的术语呢
从长远来看,要知道Stata有几种无循环求和的方法,包括summary,meanonly
,它将变量的和保留为r(sum)
,以及sum()
函数,可以在Mata中用于向量和矩阵 @refp16在这种情况下有一个很好的答案,但你的问题归结为
我在一系列嵌套循环中求和一个标量李>
答案不见了李>
这让我感到惊讶李>
一般来说,这里只能回答“再次查看您的数据和代码”。在细节上,除了
- Stata没有
+=
运算符。这也许是一个惊喜,因为斯塔塔显然喜欢类似C的结构,但这在这里并不重要<代码>+=
允许您稍微缩短代码,但不会改变您的问题显示添加的每个术语,并找出缺少的术语。您似乎正在这样做,那么为什么您不能识别缺少的术语呢
从长远来看,要知道Stata有几种无循环求和的方法,包括summary,meanonly
,它将变量的和保留为r(sum)
,以及sum()
函数,可以在Mata中用于向量和矩阵 我不太清楚你想在这里实现什么。您的foreach
s不完整(可能隐藏了问题的某些根源)。也许你可以重新设计你的问题。“输入10而不是0”是什么意思?没有涉及变量吗?@refp16-我测试了foreach的工作原理,首先创建所有变量,然后为它们创建的每个变量显示。我的问题是topTerm缺少值,当我尝试显示“topTerm”时,它返回为“.”。我不太清楚您想要在这里实现什么。您的foreach
s不完整(可能隐藏了问题的某些根源)。也许你可以重新设计你的问题。“输入10而不是0”是什么意思?没有涉及变量吗?@refp16-我测试了foreach的工作原理,首先创建所有变量,然后为它们创建的每个变量显示。我的问题是topTerm缺少值,当我尝试显示“topTerm”时,它以“.”返回。