File io 将标量写入Stata中的文件

File io 将标量写入Stata中的文件,file-io,stata,scalar,File Io,Stata,Scalar,我想将具有一些预生成值的标量写入文件。这是一个与我试图实现的非常相似的示例,但这些标量没有编写任何输出。正如代码中所示,我试图取消对标量的引用,但没有成功 scalar Sc1b = 11 scalar Sc2b = 22 scalar Sc3b = 33 scalar Sc4b = 44 scalar Sc5b = 55 scalar Sc6b = 66 scalar Sc7b = 77 scalar Sc8b = 88 file open myfile using"C:/m

我想将具有一些预生成值的标量写入文件。这是一个与我试图实现的非常相似的示例,但这些标量没有编写任何输出。正如代码中所示,我试图取消对标量的引用,但没有成功

scalar Sc1b  = 11
scalar Sc2b  = 22
scalar Sc3b  = 33
scalar Sc4b  = 44
scalar Sc5b  = 55
scalar Sc6b  = 66
scalar Sc7b  = 77
scalar Sc8b  = 88

file open myfile using"C:/mytable.txt", write replace

forvalues i=1/8 {
    forvalues q=1/8 {
        display `i', `q', `Sc`i'b', ("`Sc`i'b'"), ("`Sc("`i'")b'")  
        file write myfile ("`i'") _tab ("`q'") _tab `Sc`i'b' _tab ("`Sc`q'b'") _tab ("`Sc("`q'")b'") _n
    }
}

file close myfile

这里不需要取消对标量的引用。他们没有临时的名字;您为它们指定了永久名称,因此没有可剥离的别名。我猜想用于编写标量的多个版本的代码都是对正确代码的猜测,并且每个标量只需要一次。为了其他平台上的参考,我还删除了相当具体的Windows参考

scalar Sc1b  = 11
scalar Sc2b  = 22
scalar Sc3b  = 33
scalar Sc4b  = 44
scalar Sc5b  = 55
scalar Sc6b  = 66
scalar Sc7b  = 77
scalar Sc8b  = 88

file open myfile using "mytable.txt", write replace

forvalues i=1/8 {
    forvalues q=1/8 {
        display `i', `q', Sc`i'b 
        file write myfile ("`i'") _tab ("`q'") _tab (Sc`i'b) _n
    }
}

file close myfile

但是,请注意,此代码假定没有与标量同名或名称缩写为相同名称的变量。标量和变量共享同一名称空间。如有必要,使用
scalar()
消除歧义

太好了!这回答了我的问题。非常感谢你!