使用stata打开使用R的`saveRDS`(序列化界面)保存的文件

use*_*795 2 r stata

通常我更喜欢保存我的R对象,saveRDS以便稍后我可以使用它将它们重新分配给特定的变量df= readRDS(...).有时我想在stata做点什么.那么有没有办法打开saveRDSstata中保存的文件?

Ric*_*ton 6

必须从Stata中读取以R的二进制格式存储的变量,这表明您的数据管理策略不稳定.如果要读取多种格式的数据,则应使用非平台特定格式.这通常意味着基于文本的格式(CSV或制表符分隔或XMLJSON),或数据库,或记录良好的标准化二进制格式(HDF5).

要修复您的情况,您需要一个resave读入RDS文件并以新格式输出的函数.就像是

resave <- function(infile)
{
  x <- readRDS(infile)
  outfile <- sub("\\.rds$", "\\.csv", infile)
  write.csv(x, outfile)
}
Run Code Online (Sandbox Code Playgroud)

另一种可能的策略是根据需要转换文件foreign::write.dta.这在StatLore博客中有所描述.如果您偶尔使用Stata,这可能是更好的策略.

这个想法是你有一个R代码的批处理文件来重新保存文件,然后你使用Stata的shell命令以批处理模式调用R.

shell "<path to R>\R.exe" CMD BATCH resaveAsDta.R
Run Code Online (Sandbox Code Playgroud)

然后你可以use正常的DTA文件.