更改 R 包中的功能并在 Ubuntu 上安装

making change to function in R package and installing on Ubuntu

小问题:我想编辑 RPostgreSQL 包中的 postgresqlWriteTable 函数,并在 Ubuntu 机器上的 R 运行ning 上安装它。

详细解释:

我的问题的根源是我正在尝试使用来自 [=13] 的 dbWriteTable 写入带有来自 R 的自动递增主键列的 postgres table =] 包。

我读了这个 post: How do I write data from R to PostgreSQL tables with an autoincrementing primary key? 它建议通过更改 RPostgreSQL 包中的函数 postgresqlWriteTable 来解决我的问题。当我在 OSX 环境中交互式使用 fixInNamespace 并编辑函数时,它会起作用。

不幸的是,我必须 运行 在 AWS 实例 运行ning R 上 Ubuntu 我的脚本。我在机器上的这个位置安装了 RPostgreSQL/usr/local/lib/R/site-library/RPostgreSQL。我通过调用 R CMD install RPostgreSQL_0.4-1.tar.gz

安装它

现在我试图找到函数 postgresqlWriteTable。它应该在文件 PostgreSQLSupport.R 中。我搜索了整个图书馆 - 没有这样的文件。

我意识到在本地机器上的 OSX Finder 中,当我解压缩 tar.gz 包文件夹时,我可以看到文件 PostgreSQLSupport.R 我应该在其中更改功能。

所以我改变了功能。然后我从我的 Ubuntu 机器上删除了已安装的 RPostgreSQL 并将新文件夹(从我的本地机器)复制到我的 Ubuntu 机器中并尝试使用 devtools 按照建议安装包post 这里:Loading an R Package from a Custom directory

事情是这样的:

> library("devtools")
> install("/usr/local/lib/R/site-library/RPostgreSQL")
Error: Can't find '/usr/local/lib/R/site-library/RPostgreSQL'.
> install("RPostgreSQL", "/usr/local/lib/R/site-library/RPostgreSQL")
Installing RPostgreSQL
'/usr/lib/R/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet  \
  CMD INSTALL '/datasci/nikhil/RPostgreSQL'  \
  --library='/usr/local/lib/R/site-library' --install-tests 

* installing *source* package ‘RPostgreSQL’ ...
file ‘R/PostgreSQLSupport.R’ has the wrong MD5 checksum
ERROR: 'configure' exists but is not executable -- see the 'R Installation and Administration Manual'
* removing ‘/usr/local/lib/R/site-library/RPostgreSQL’
Error: Command failed (1)

我已经无计可施了!

  1. 将 pacakge .tar.gz 文件复制到 AWS 机器。
  2. 解压这个文件,这样你就有了一个目录结构。
  3. 编辑文件中的函数并保存更改。
  4. 您可能还需要增加 DESCRIPTION 文件中的版本号。
  5. 使用 devtools::build 创建一个新的 .tar.gz 文件。
  6. 安装这个更新版本的包。