为什么merge
在以下情况下不起作用?它给出了错误`错误:
require(ff)
require(ffbase)
a <- ffbase:::as.ff_matrix.ffdf(as.ffdf(data.frame(matrix(rnorm(10),ncol=2))))
b <- ffbase:::as.ff_matrix.ffdf(as.ffdf(data.frame(matrix(rnorm(10),ncol=2))))
a <- as.ffdf(a)
b <- as.ffdf(b)
colnames(a) <- 1:2
colnames(b) <- 3:4
a$RN <- as.ff(1:5)
b$RN <- as.ff(1:5)
c <- merge(a,b,by="RN") #ERROR
但是,如果我不进行投射,它可以工作:
a <- as.ffdf(data.frame(matrix(rnorm(10),ncol=2)))
b <- as.ffdf(data.frame(matrix(rnorm(10),ncol=2)))
colnames(a) <- 1:2
colnames(b) <- 3:4
a$RN <- as.ff(1:5)
b$RN <- as.ff(1:5)
c <- merge(a,b,by="RN")
答案 0 :(得分:0)
有趣。
merge.ffdf是ffbase的一部分,所以这应该可以工作,但显然在执行ffbase:::as.ff_matrix.ffdf
时,PhysicalIsMatrix仍然是TRUE。这可能会破坏通用调度。
ffdf (all open) dim=c(5,3), dimorder=c(1,2) row.names=NULL
ffdf virtual mapping
PhysicalName VirtualVmode PhysicalVmode AsIs VirtualIsMatrix PhysicalIsMatrix PhysicalElementNo PhysicalFirstCol PhysicalLastCol PhysicalIsOpen
1 x double double FALSE FALSE TRUE 1 1 1 TRUE
2 x double double FALSE FALSE TRUE 1 2 2 TRUE
RN RN integer integer FALSE FALSE FALSE 2 1 1 TRUE
您能否在https://github.com/edwindj/ffbase/issues报告此问题。我会看看是否可以更改未导出的ffbase:::as.ff_matrix.ffdf
。感谢。