2017-08-19 56 views
0

これは前記エラーを生成するコード行です。変数 'y'には値 '0'または '1'が含まれます。データフレームには約12種類の変数があります。私はRバージョン3.4.1を使用しています。分割のエラー== TRUE:比較(1)はアトミックとリストのタイプに対してのみ可能

set.seed(201) 
library(caTools) 
spl = sample.split(bank$y, 0.7) 
training <- subset(bank, split == TRUE) 
+0

また、ようこそ: – rosscova

+0

私はサブセット関数を数回使用し、 '='は動作しません。 '='は、 'bank'と同じデータフレームを持つトレーニングセットを生成します。 '=='はこのデータセットを除いて常に働きました。 ありがとう、ここにいることをうれしく思います。まだ場所を見つけて:) – Space

+0

申し訳ありませんが、入力する前に、サブセットに比較演算子が必要だと思います。私の悪い。 – rosscova

答えて

2

あなたのデータはありませんが、間違った名前でオブジェクトを呼び出すようです。

training <- subset(bank, spl == TRUE) 

個人的に、私はそれが私の脳に複数の論理だが、それは同じことをやっているという理由だけで、次のことを好む:

training <- bank[ spl == TRUE, ] 

あなたはさらに行くことができますが、それはあまり意味をなさないかもしれませんが、どのようにお使いに応じて、脳は働く:

training <- bank[ spl, ] 

説明するために:あなたは、ベクトルを作成するには、次のとsplと呼ば:

spl = sample.split(bank$y, 0.7) 

これは、TRUEの値に対応する行にデータフレームをサブセット化する目的で、論理ベクトルを返します。splです。これを行うには、subsetなどを使用します。 subsetは、サブセット化演算子として使用する入力(バンク)とベクトルを要求します。このベクトルは論理ベクトル「」を「使用しない」にはTRUE、「使用しない」にはFALSEです。あなたのサブセットパラメータはsplです。これはTRUE,TRUE,FALSE,....のように見えますので、subsetに直接渡すことができます。

spl <- c(T,T,T,F,F) 

> spl 
[1] TRUE TRUE TRUE FALSE FALSE 

> spl == TRUE 
[1] TRUE TRUE TRUE FALSE FALSE 

あなたは、交換可能にsplまたはspl==TRUEを使用することができます理由です:論理ベクトルの場合には、「TRUE ==」でベクトルを渡すと、実際に同じベクトルを返すこと

は注意してください。

+0

>オブジェクトを間違った名前で呼び出す。 もう少し理解していただけたら助かりますか?私が間違っているかもしれない場所のように。私はコーディングと統計にはまだまだ新しいので、基本を理解しています。 – Space

+0

'training < - df [spl == TRUE、]'これは、私がその解決策を試したときに受けるエラーです。 'df [spl == TRUE、]: 'closure'型のオブジェクトはサブセット化できません。 ' – Space

+0

' df'は実際には 'bank'ですが、私はもっと一般的に' df'を使用しました。 – rosscova

関連する問題