31

data.frameループを使用してデータを入力する関数を定義しています。ある時点で、警告メッセージが表示されます。

警告メッセージ:1:In [<-.factor*tmp*、iseq、value = "CHANGE"):無効なファクターレベル、NAが生成されました

stringsAsFactorsしたがって、data.frameを定義するときに、オプションをに設定したいのですが、そのFALSE方法がわかりません。

私が試してみました:

DataFrame = data.frame(stringsAsFactors=FALSE)

そしてまた:

options(stringsAsFactors=FALSE)

stringsAsFactorsオプションを設定する正しい方法は何ですか?

4

1 に答える 1

41

これは、コードを指定していないデータフレームをどのように埋めるかによって異なります。新しいデータフレームを作成するときは、次のように行うことができます。

x <- data.frame(aName = aVector, bName = bVector, stringsAsFactors = FALSE)

この場合、egaVector文字ベクトルの場合、データフレーム列x$aNameも文字ベクトルになり、因子ベクトルにはなりません。これを既存のデータフレームと組み合わせると(rbindcbindなどを使用して)、そのモードが維持されます。

実行すると

options(stringsAsFactors = FALSE)

グローバルデフォルト設定を変更します。したがって、その行を実行した後に作成するすべてのデータフレームは、明示的に指示されない限り、因子に自動変換されません。1つの場所での変換を回避するだけでよい場合は、デフォルトを変更したくありません。ただし、これがコード内の多くの場所に影響する場合は、デフォルトを変更することをお勧めします。

もう1つ、ベクトルにすでに因子が含まれている場合、上記のいずれもそれを文字ベクトルに戻しません。as.characterそのためには、または同様のものを使用して明示的に変換し直す必要があります。

于 2012-07-18T09:59:19.533 に答える