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

时间:2013-02-17 16:59:17

标签: r stata

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

1 个答案:

答案 0 :(得分:6)

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

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

这样的东西
resave <- function(infile)
{
  x <- readRDS(infile)
  outfile <- sub("\\.rds$", "\\.csv", infile)
  write.csv(x, outfile)
}

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

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

shell "<path to R>\R.exe" CMD BATCH resaveAsDta.R

然后您可以正常use DTA文件。