2017-12-21 30 views
1

私はH2OをRに使用しています.H2Oフレームの2つの異なる要素を比較しようとすると、環境変数[1行×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[1,1]を選択し、1行目にある要素を選択し、セル1 d[6,1]はTRUEを返しd.hex[1,1] == d.hex[6,1]、したがってセル1

、行6の要素を選択します。

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を比較しています。 1つの列H2OFrameに複数の型を入れようとすると、そのうちの1つをNAに割り当てます。

+0

こんにちは@Lauren、書いてくれてありがとう。しかし、私は問題をうまく説明できないと思う。私が期待しているのは、比較演算がRの形式でTRUEまたは1の値を返さなければならないということです。しかし、それは1 [1行×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 :-)を返します。 –

関連する問題