2014-10-28 192 views
2

现在,在我的Windows 7办公机器上运行的项目现在在我的Mac OS X笔记本电脑上出现错误,并尝试使用R Studio运行它。失败的部分是Read.dta在Mac OS X上无法正常工作

library(foreign) 
basis <- read.dta("myfile.dta") 
Error in factor(rval[[v]], levels = tt[[ll[v]]], labels = names(tt[[ll[v]]])) : 
    invalid 'labels'; length 4 should be 1 or 3 

RRstudio上的最新版本,我已经跑了update.packages()。因为我是R本身的初学者,所以我完全无能为力。

难道这不知何故与OS X编码有关? stata文件中包含德语“变音符号”(即非ISO字符)。

+0

什么版本的STATA文件保存为? – kolonel 2014-10-28 19:30:11

+1

您的代码是否包含read.dta函数所需的库(外部)?正如@kolonel所指,[R不会读Stata版本11以外的Stata文件](http://cran.r-project.org/web/packages/foreign/index.html)。这也可能有助于检查您是否正在运行最新版本的RStudio,在撰写本文时为0.98.1083。 – zhaoy 2014-10-28 19:33:47

+0

是的,包括图书馆。这不是我的.dta文件,所以我不知道它对应的是哪个版本(目前试图找出如何),但它在Windows下工作。因此,我认为这不是问题。 – FooBar 2014-10-28 19:58:39

回答

2

改为使用包memisc。这应该是更灵活。从文档(发现here),我们有:

进口商机制比包“洋”的read.spss 和read.dta更加灵活和可扩展的,因为大多数的文件解析的 头是在R完成。

因此回到问题。首先,加载以下:

library(lattice) 
library(MASS) 
library(memisc) 

,然后使用电话:

as.data.frame(as.data.set(Stata.file("filename.dta"))) 
+0

这工作。它有点烦人,我现在不得不使用额外的软件包,但它肯定比没有好。 – FooBar 2014-10-28 20:58:58

+0

@FooBar这其实更加健壮。我会在我的文章中添加更多细节。 – kolonel 2014-10-28 21:02:42

+0

@FooBar看到我更新的答案,以更好地解释我的意思。 – kolonel 2014-10-28 21:08:37