7

在 Ubuntu 上安装 RODBC 包有点麻烦。首先,我学会了安装以下内容:

$ sudo apt-get install r-cran-rodbc

这还不够好,因为包仍在寻找头文件。我通过以下方式解决了这个问题:

$ sudo apt-get install unixodbc-dev

很好,RODBC 已正确安装在 Ubuntu 机器上。但是当我尝试运行以下脚本时:

## import excel file from Dropbox

require("RODBC")

channel <- odbcConnectExcel("~/Dropbox/DATA/SAMPLE/petro.xls")

petro <- sqlFetch (channel, "weekly")

odbcClose(channel)

str(petro)
head(petro)

我收到一个错误,提示找不到函数 odbcConnectExcel。我检查了每个字母的大小写,确保它不是一个简单的错字。没有。然后我在 Windows R 安装上运行了相同的脚本(当然,文件路径不同)并且脚本有效。

知道为什么 Ubuntu R 安装找不到 odbcConnectExcel 函数以及如何让它工作吗?

4

2 回答 2

6

该功能在 Excel 可用的地方可用。换句话说:不在 Ubuntu 上。

作为参考,来自R Data Import / Export 手册(我的突出显示):

4.3.2 封装 RODBC

CRAN 上的 RODBC 包为支持 ODBC 接口的数据库源提供了一个接口。这是非常广泛可用的,并且允许相同的 R 代码访问不同的数据库系统。RODBC 在 Unix/Linux、Windows 和 Mac OS X 上运行,几乎所有的数据库系统都提供对 ODBC 的支持。我们在 Windows 上测试了 Microsoft SQL Server、Access、MySQL、PostgreSQL、Oracle 和 IBM DB2,在 Linux 上测试了 MySQL、Oracle、PostgreSQL 和 SQLite。

ODBC 是一个客户端-服务器系统,我们很乐意从 Windows 客户端连接到运行在 Unix 服务器上的 DBMS,反之亦然。

在 Windows 上,通常安装 ODBC 支持,当前版本可从 http://www.microsoft.com/data/odbc/作为 MDAC 的一部分获得。在 Unix/Linux 上,您需要一个 ODBC 驱动程序管理器,例如 unixODBC ( http://www.unixODBC.org ) 或 iOBDC ( http://www.iODBC.org:这是预装在 Mac OS X 中的) 和一个为您的数据库系统安装驱动程序。

Windows 不仅为 DBMS 提供驱动程序,还为 Excel (.xls) 电子表格、 DBase (.dbf) 文件甚至文本文件提供驱动程序。(指定的应用程序不需要安装。支持哪些文件格式取决于驱动程序的版本。)有 Excel 2007 和 Access 2007 的版本(访问 http://download.microsoft.com并搜索for Office ODBC,这将导致 AccessDatabaseEngine.exe),即“2007 Office System 驱动程序”。

于 2010-08-06T18:14:53.417 回答
5

我发现 RODBC 在 Ubuntu 中是一个真正的痛苦。也许是因为我不知道正确的咒语,但我切换到 RJDBC 并且运气好得多。正如这里所讨论的

正如 Dirk 所说,这不会解决您的 Excel 问题。对于编写 Excel,我对 WriteXLS 包非常满意。在 Ubuntu 中,我发现它很容易设置。我已经安装了 Perl 和许多软件包,只需安装我使用 GUI 软件包管理器安装的 Text::CSV_XS。我喜欢 WriteXLS 的原因是能够将数据框写入 Excel 文件中的不同工作表。现在我看了你的问题,我看到你想阅读 Excel 文件而不是写它们。地狱。WriteXLS 不这样做。坚持使用 gdata,就像 Dirk 在他的评论中所说:

CRAN 上的 gdata并且您将需要 read.xls() 函数:

read.xls("//path//to/excelfile.xls", sheet = 1, verbose=FALSE, pattern, ...,
method=c("csv","tsv","tab"), perl="perl")

您可能需要运行installXLSXsupport安装所需的 Perl 模块。

read.xls 期望工作表编号,而不是名称。方法参数只是中间文件格式。如果您的数据有选项卡,则不要使用选项卡作为中间格式。逗号和 csv 也是如此。

于 2010-08-06T20:14:36.637 回答