33

数値型に変換する必要がある一連の列を含むデータフレームがあります。これを行うために次のコードを書きましたが、置換の行が 0 であると言っています。

instanceconvert <- colnames(regmodel[7:262])

for (i in instanceconvert)
{
  regmodel$i <- as.numeric(regmodel$i)
}

どんな助けでも大歓迎です。

4

7 に答える 7

5

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 を使用してこれを行うこともできます。

于 2013-10-02T20:50:14.437 に答える
5

@Andriiによる回答と@RobertYiによるコメントを組み合わせると、私の短い提案は

df[] <- sapply(df, as.numeric)

これにより、結果がデータ フレームのままになります。

于 2020-08-11T19:29:38.417 に答える
3

特に変換が必要な変数がいたるところにある場合は、それを行うための高速で汚い方法です。これは、多くの変換コードが、ファイルを書き出して、 write.csv/read.csv のようなものを使用して再度読み込むことを意味します。

write.csv(regmodel, file="regmodel.csv")
read.csv(file="regmodel.csv")
于 2016-07-18T18:34:17.960 に答える