我正在使用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
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数据帧!
故事的寓意:在处理单个元素时,明确指定行和列。
您可以使用h2o.getTypes()
获取数据框的列类型
在你的情况下h2o.getTypes(d.hex)
H2O要求每列只包含一种类型,因此如果要比较同一列中的第1行和第6行,它们将具有相同的类型。如果您尝试将多个类型放在单个列H2OFrame中,它会将其中一个分配给NA。