2つの列を持つデータフレームがあります。最初の文字列には数値が含まれ、2番目の文字列には2つの文字列が含まれます。私の問題は次のとおりです。第2列の文字列を別の文字列に置き換えると、最初の列はclass
から強制的に数値に変換されます。ここに例があります:他の文字列が変更されたときに数値列が文字列に強制されます
df <- data.frame(num = c(1,2), char = c("a", "b"), stringsAsFactors = F)
class(df$num) # "numeric"
class(df$char) # "character"
df[df$char == "a", ] <- "c"
class(df$char) # "character"
class(df$num) # "character" !!
この動作の理由とその停止方法は何ですか?
あなたの答えに間違いはありません。もう1つのオプションは 'df [df [[" char "]] ==" a "、" char "] < - " c "'です。あなたの答えにあるものは少し入力する方が簡単ですが、私のコメントにあるものは変数で動作するので、両方を知っておいてよかったです。あなたが 'my_col < - " char "'を持っているならば、 'df [[my_col]] ==" a "、my_col] < - " c "'は変数では動作しません。 – Gregor