如何解决RedHat Linux发行版上rgdal、bit64和dplyr干扰导致的错误

如何解决RedHat Linux发行版上rgdal、bit64和dplyr干扰导致的错误,r,dplyr,redhat,rgdal,bit64,R,Dplyr,Redhat,Rgdal,Bit64,当在Redhat上使用包含rgdal的库运行以下代码时,我得到了一个不正确的结果。 具体地说,内部连接似乎复制第一个数据帧的每一行,而不考虑第二个数据帧的键(因此只是复制而不是连接) 这是一个从交互式web应用程序(r-Shining)中更大的代码中提取的最小运行示例。在那里,我的原始数据帧有数千行。除了不正确的结果外,联接也将超出内存 我已经尝试了几个Linux发行版和R版本。以下是我得到此错误的配置: Red Hat Enterprise Linux Server 7.6版(Maipo) R

当在Redhat上使用包含rgdal的库运行以下代码时,我得到了一个不正确的结果。 具体地说,内部连接似乎复制第一个数据帧的每一行,而不考虑第二个数据帧的键(因此只是复制而不是连接)

这是一个从交互式web应用程序(r-Shining)中更大的代码中提取的最小运行示例。在那里,我的原始数据帧有数千行。除了不正确的结果外,联接也将超出内存

我已经尝试了几个Linux发行版和R版本。以下是我得到此错误的配置: Red Hat Enterprise Linux Server 7.6版(Maipo) R版本3.5.2(来自EPEL)或3.6.0(从头编译)

无论是R版本3.6.0还是R版本3.4.4,Ubuntu18.04.2 LTS上都没有出现此错误

代码如下:

library(dplyr)
library(bit64)

library(rgdal) # Bug only when including this package

df1 <- data.frame( a=c(1,2,3), id=as.integer64(c(10,11,12)) )
df2 <- data.frame( id=as.integer64(c(13,14)), b=c(4,5) )
print( df1 )
print( df2 )

# Bug
print( nrow( df1 ) ) # 3
t <- inner_join( df1, df2, by="id" )
print( nrow( t ) ) # correct would be 0, but returns 6!

正确答案是:

> t
[1] a  id b 
<0 rows> (or 0-length row.names)
>t
[1] 身份证
(或长度为0的行名称)
考虑到在不同的Linux发行版(但相同的R版本和库)上的不同结果,我假设这个bug源于RedHat发行版中使用的底层库。
我非常感谢您就如何解决此问题提供任何建议或建议。

您可能希望联系软件包维护人员将此报告为错误(罗杰·比凡德--请参阅)。您可能希望联系软件包维护人员将此报告为错误(罗杰·比凡德--请参阅)
> t
  a id b
1 1 10 4
2 1 10 5
3 2 11 4
4 2 11 5
5 3 12 4
6 3 12 5
> t
[1] a  id b 
<0 rows> (or 0-length row.names)