h2o类型环境中的比较运算符返回类型环境

问题描述 投票:1回答:2

我正在使用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
2个回答
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数据帧!

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.