2017-12-21 36 views
1

H를 사용하여 R을 사용하고 있습니다. H2O 프레임의 두 가지 요소를 비교하려고하면 환경 변수 [1 행 x 1 열]가 표시됩니다. 이 개체의 형식을 숫자 또는 부울 형식으로 변환하고 싶습니다.h2o 유형 환경의 비교 연산자는 유형 환경을 반환합니다.

재현 가능한 예입니다.

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 

답변

1

d 1 열 6 행이다.

d[,1] (R 및 H2O R API에서) 열 1을 선택합니다. d[1]은이를 작성하는 또 다른 방법입니다.

d[1,] 셀 1

그래서 d.hex[1,1] == d.hex[6,1] 복귀 TRUE, 전지 (1)가 행 d[6,1] 6의 요소를 선택하고, 1

d[1,1]가 1 행에있는 요소를 선택 행을 선택한다.

H2O R API가 일반 R과 다른 것으로 보이는 경우 일부 행/열 쿼리, 특히 오류가 있습니다. d[6]은 오류를 나타내지 만 d.hex[6]은 첫 번째 행을 반환합니다. d[,6]은 오류를 나타내지 만 d.hex[,6]은 0x0 데이터 프레임을 반환합니다!

이야기의 도덕 : 개별 요소를 다룰 때 행과 열을 명시 적으로 지정하십시오.

0

광고의 열 유형을 가져올 수 있습니다. ataframe h2o.getTypes(d.hex)

H2O는 각 열은 하나 개의 유형을 포함해야합니다 귀하의 경우

h2o.getTypes()를 사용하여, 만약 그렇다면 당신은 같은 종류의 것 같은 열에 행 1 행 6을 비교하고 있습니다. 하나의 열 H2OFrame에 여러 유형을 넣으려고하면 그 중 하나를 NA에 할당합니다.

+0

안녕하세요 @Lauren, 작성해 주셔서 감사합니다. 그러나 나는 문제를 잘 설명 할 수 없다고 생각한다. 내가 기대하는 것은 비교 연산이 R 형식의 TRUE 또는 1 값을 반환해야한다는 것입니다. 하지만 1 [1 행 x 1 열]이 반환됩니다. –

0

이것은 문제를 해결 한 방법입니다. R에서 h2o 패키지의 h2o.ifelse() 함수를 사용했습니다.이 함수를 사용자 정의 함수로 묶었습니다.

areEqual4h2o <- function(x, y){ 
    h2o.ifelse(x == y, return(1), return(0)) 
} 

areEqual4h2o(d.hex[1], d.hex[6]) 

복귀

[1] 1 
+0

'd.hex [6]'은 실제로 에러 메시지 대신'd.hex [1]'을 반환하기 때문에 (이는 내 대답 참조) 우연히 만 작동합니다. 예 : 'areEqual4h2o (d.hex [1], d.hex [5])'도 1 :-)를 반환합니다. –