数値型に変換する必要がある一連の列を含むデータフレームがあります。これを行うために次のコードを書きましたが、置換の行が 0 であると言っています。
instanceconvert <- colnames(regmodel[7:262])
for (i in instanceconvert)
{
regmodel$i <- as.numeric(regmodel$i)
}
どんな助けでも大歓迎です。
数値型に変換する必要がある一連の列を含むデータフレームがあります。これを行うために次のコードを書きましたが、置換の行が 0 であると言っています。
instanceconvert <- colnames(regmodel[7:262])
for (i in instanceconvert)
{
regmodel$i <- as.numeric(regmodel$i)
}
どんな助けでも大歓迎です。
SenorO が指摘したように、元のコードが機能しない理由は、現在の値を見つけるために$i
評価されないためです。i
代わりに、二重括弧を使用して列にアクセスして割り当てる必要があります。これi
は、が名前またはインデックス番号の場合に機能します。
for (i in instanceconvert)
{
regmodel[[i]] <- as.numeric(regmodel[[i]])
}
Ari のアプローチに従って、ループを取り除くことができます。
regmodel[,instanceconvert] <-
lapply(regmodel[,instanceconvert,drop=FALSE],as.numeric)
名前または列番号でアクセス/割り当てできるため、「instanceconvert」の代わりに範囲 7:262 を使用してこれを行うこともできます。
@Andriiによる回答と@RobertYiによるコメントを組み合わせると、私の短い提案は
df[] <- sapply(df, as.numeric)
これにより、結果がデータ フレームのままになります。
特に変換が必要な変数がいたるところにある場合は、それを行うための高速で汚い方法です。これは、多くの変換コードが、ファイルを書き出して、 write.csv/read.csv のようなものを使用して再度読み込むことを意味します。
write.csv(regmodel, file="regmodel.csv")
read.csv(file="regmodel.csv")