【问题标题】:Comparison operators in h2o type environment returns type environmenth2o 类型环境中的比较运算符返回类型环境
【发布时间】:2017-12-21 14:36:43
【问题描述】:

我将 H2O 与 R 结合使用。当我尝试比较 H2O 框架的两个不同元素时,我得到一个环境变量 [1 行 x 1 列]。我想将此对象的类型转换为数值或布尔类型。

可重现的例子。

library(h2o)
h2o.init()

>d <- as.data.frame(c(1,2,3,4,5,1))
>d.hex <- as.h2o(d)

>d.hex[1]
c(1, 2, 3, 4, 5, 1)
1                   1
[1 row x 1 column]

>typeof(d.hex[1])
[1] "environment"

我想要一种方法来转换以下代码,使其返回布尔值,或者 0 或 1。

>d.hex[1] == d.hex[6]
c(1, 2, 3, 4, 5, 1)
1                   1    
[1 row x 1 column]

预期输出

[1] True

或

[1] 1

【问题讨论】:

    标签: r types boolean h2o comparison-operators


    【解决方案1】:

    d 是 1 列 6 行。

    d[,1](在 R 和 H2O R API 中)选择第 1 列。d[1] 是另一种写法。

    d[1,] 选择第 1 行。

    d[1,1] 选择第 1 行单元格 1 中的元素。d[6,1] 选择第 6 行单元格 1 中的元素。

    所以,d.hex[1,1] == d.hex[6,1] 返回 TRUE。

    H2O R API 与普通 R 的不同之处在于某些行/列查询,尤其是有错误:d[6] 给出错误,但d.hex[6] 返回第一行; d[,6] 给出错误,但 d.hex[,6] 返回一个 0x0 数据帧!

    故事的寓意:在处理单个元素时,明确指定行和列。

    【讨论】:

      【解决方案2】:

      您可以使用 h2o.getTypes() 获取数据框的列类型

      在你的情况下h2o.getTypes(d.hex)

      H2O 要求每列仅包含一种类型,因此如果您比较同一列中的第 1 行和第 6 行,它将具有相同的类型。如果您尝试将多种类型放在单个 H2OFrame 列中,它会将其中一种类型分配给 NA。

      【讨论】:

      • 嗨@Lauren,感谢您的来信。但我想我不能很好地解释这个问题。我期望的是比较操作应该以 R 格式返回一个 TRUE 或 1 值。但它返回 1 [1 行 x 1 列]。
      猜你喜欢
      • 1970-01-01
      • 2016-12-29
      • 2020-05-16
      • 1970-01-01
      • 2011-02-03
      • 2020-03-28
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多