1

我们有一个 R 程序,它过滤表中的一些数据并使用结果创建一个新表。在 Windows 和 OSX 上,程序运行并且我们的表被正确创建。但是,在我们的 Linux (Ubuntu 12.04) 服务器上,同一个 R 程序会生成一个包含垃圾数据的表。

当我们将 Linux 上产生的垃圾数据与正确的数据进行比较时,我们发现:

  • 应该有文本值的列中看似任意的数字
  • 额外的行

我们认为问题出在编码上,但到目前为止,我们所有改变数据库编码的努力都失败了。

我们的 R 脚本用于RMySQL连接 MySQL 数据库、过滤内容并将其写入新表(使用dbReadTableand dbWriteTable命令)。我们知道命令本身不是问题,因为我们能够在过滤它们之前和之后检查 data.frame - 问题在于dbWriteTable.

这两个链接似乎最接近我们问题的解决方案,但我们必须等待拉取请求通过:

  1. https://github.com/jeffreyhorner/RMySQL/issues/6
  2. https://github.com/gagern/RMySQL/commit/b0fbef105ca61d69992a2ec5a5eafde30530b8d5

这些也是相关的:

  1. http://zee.balogh.sk/?p=928
  2. 字符集和排序规则到底是什么意思?
4

1 回答 1

1

根据过去的经验,我认为这不是问题dbWriteTable;甚至不是编码问题!

stringsAsFactors = T您在编写 data.frame 时很可能有,这些数字是因子数。

于 2014-05-10T02:30:07.907 回答