如何在R中的两个H2OFrame之间进行交叉连接?

时间:2017-11-27 15:34:37

标签: r h2o cross-join

我想在两个H2O框架之间进行交叉连接。寻找严格在H2OFrame

的工作
col1.1 <- c('A', 'B', 'E', 'C', 'F', 'D')
dummy <- rep(1,6)

d1.hex <- as.h2o( cbind( col1.1, dummy ) )

col2.1 <- c('xx', 'yy', 'zz', 'ww')

dummy <- rep(1,4)

d2.hex <- as.h2o( cbind( col2.1, dummy ) )

如果我使用all =TRUE,则会抛出错误:未实现

h2o.merge(d1.hex, d2.hex, all = TRUE)

如果我使用默认值,则加入结果不是交叉连接

h2o.merge(d1.hex, d2.hex )
  

dummy col1.1 col2.1

     

1 A xx

     

1 B xx

     

1 E xx

     

1 C xx

     

1 F xx

     

1 D xx

我尝试将加入列的数据类型更改为分类或数字,但没有成功。寻求您帮助解决问题。

谢谢

1 个答案:

答案 0 :(得分:0)

令人沮丧的答案是你不能,并且已经有两个错误报告:

https://0xdata.atlassian.net/browse/PUBDEV-4516

https://0xdata.atlassian.net/browse/PUBDEV-3699

最简单的解决方法是下载所有数据,并在R客户端中执行。但是有大数据可能是不可能的。如果必须在H2O集群中进行,则需要循环:

  1. 将d1.hex中第一个唯一值的行复制到tmp
  2. tmp2 = h2o.merge(tmp, d2.hex, all.y = TRUE)
  3. 对d1.hex中的每个唯一值重复此操作。然后,最后,在所有h2o.rbind()表上执行tmp2

    或者,经典的开源解决方案:自己实现未实现的代码(或者请求/支付h2o.ai来实现它)。