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