ループを使用してデータを入力するdata.frame
を定義する関数があります。ある時点で、警告メッセージが表示されます。
警告メッセージ:1:In
[<-.factor
(*tmp*
、iseq、value = "CHANGE"):無効な因子レベル、生成されたNA
したがって、data.frameを定義するときに、オプションstringsAsFactors
をFALSE
に設定したいのですが、その方法がわかりません。
私が試してみました:
DataFrame = data.frame(stringsAsFactors=FALSE)
また:
options(stringsAsFactors=FALSE)
StringsAsFactorsオプションを設定する正しい方法は何ですか?
コードを指定していないデータフレームをどのように埋めるかによって異なります。新しいデータフレームを作成するとき、次のようにできます。
x <- data.frame(aName = aVector, bName = bVector, stringsAsFactors = FALSE)
この場合、if e.g. aVector
は文字ベクトルであり、データフレーム列x$aName
も文字ベクトルであり、因子ベクトルではありません。これを既存のデータフレームと組み合わせて(rbind
、cbind
などを使用)、そのモードを保持する必要があります。
実行するとき
options(stringsAsFactors = FALSE)
グローバルなデフォルト設定を変更します。そのため、その行の実行後に作成するすべてのデータフレームは、明示的にそうするように指示されない限り、因子に自動変換されません。単一の場所での変換を回避する必要がある場合は、デフォルトを変更しないでください。ただし、これがコード内の多くの場所に影響する場合は、デフォルトを変更することをお勧めします。
もう1つ:ベクトルalreadyに因子が含まれている場合、上記のどちらもそれを文字ベクトルに戻しません。これを行うには、as.character
などを使用して明示的に元に戻す必要があります。