有条件地从R中的H2O框架对象中删除行

时间:2017-09-08 13:12:50

标签: r dataframe h2o

我有像这样的H2O框架R对象

h2odf

A | B | C | D
--|---|---|---
1 | NA| 2 | 0
2 | 1 | 2 | 0
3 | NA| 2 | 0
4 | 3 | 2 | 0

我想删除B为NA(第1行和第3行)的所有行。我试过了

na <- is.na(h2odf[,"b"])
h2odf <- h2odf[!na,]

h2odf <- h2odf[!is.na(h2odf$B),]

h2odf <- subset(h2odf, B!=NA)

这适用于R Dataframe但不适用于H2O。给出这个错误:

Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page,  : 


ERROR MESSAGE:

DistributedException from localhost/127.0.0.1:54321: 'Cannot set illegal UUID value'

所需的输出

h2odf

A | B | C | D
--|---|---|---
2 | 1 | 2 | 0
4 | 3 | 2 | 0

我有一个选项是将其转换为R Dataframe,删除行并将其转换回H2O帧。但这需要很长时间,因为输入文件大小接近4.5 GB。是否可以在H2O帧十六进制对象本身中执行此操作?

我在aws集群上运行Rstudio。

1 个答案:

答案 0 :(得分:1)

> class(h2odf)
[1] "H2OFrame"

> h2odf
  A  B C D
1 1 NA 2 0
2 2  1 2 0
3 3 NA 2 0
4 4  3 2 0

[4 rows x 4 columns] 

> h2odf[!is.na(as.numeric(as.character(h2odf$B))),]
  A B C D
1 2 1 2 0
2 4 3 2 0

[2 rows x 4 columns]