Операторы сравнения в среде типа h2o возвращают среду типа

Я использую 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

or

[1] 1

person Shekhar Sahu    schedule 21.12.2017    source источник


Ответы (2)


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] возвращает ИСТИНА.

Где кажется, что H2O R API отличается от обычного R, так это в некоторых запросах строк/столбцов, особенно с ошибками: d[6] выдает ошибку, но d.hex[6] возвращает первую строку; d[,6] выдает ошибку, а d.hex[,6] возвращает кадр данных 0x0!

Мораль этой истории: при работе с отдельными элементами явно указывайте и строку, и столбец.

person Darren Cook    schedule 22.12.2017

вы можете получить типы столбцов для фрейма данных, используя h2o.getTypes()

в вашем случае h2o.getTypes(d.hex)

H2O требует, чтобы каждый столбец содержал только один тип, поэтому, если вы сравниваете строку 1 и строку 6 в одном и том же столбце, они будут иметь один и тот же тип. Если вы попытаетесь поместить несколько типов в один столбец H2OFrame, он назначит один из них NA.

person Lauren    schedule 21.12.2017
comment
Привет @Lauren, спасибо за письмо. Но я думаю, что не смог хорошо объяснить проблему. Я ожидаю, что операция сравнения должна возвращать значение TRUE или 1 в формате R. Но он возвращает 1 [1 строка x 1 столбец]. - person Shekhar Sahu; 22.12.2017