通常我更喜欢使用saveRDS
保存我的R对象,以便稍后我可以使用df= readRDS(...)
将它们重新分配给特定变量。有时我想在stata做点什么。那么有没有办法在stata中打开用saveRDS
保存的文件?
答案 0 :(得分:6)
必须从Stata中读取以R二进制格式存储的变量,这表明您的数据管理策略不稳定。如果要读取多种格式的数据,则应使用非平台特定格式。这通常意味着基于文本的格式(CSV或制表符分隔或XML或JSON),或数据库,或记录良好的标准化二进制格式(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文件。