データテーブル内の選択された変数のクラスを、ベクトル化操作を使用して変更したいとします。私はdata.table構文が新しく、できるだけ覚えようとしています。私は今質問は基本的ですが、それは私がより良い考え方を理解するのに役立ちます!データテーブルの選択列を再分類
同様の質問がありましたhere!しかし、この解決策は、ただ1つの列またはすべての列を再分類することに関係していると思われる。私の質問は、いくつかの選択された列に固有です。
### Load package
require(data.table)
### Create pseudo data
data <- data.table(id = 1:10,
height = rnorm(10, mean = 182, sd = 20),
weight = rnorm(10, mean = 160, sd = 10),
color = rep(c('blue', 'gold'), times = 5))
### Reclass all columns
data <- data[, lapply(.SD, as.character)]
### Search for columns to be reclassed
index <- grep('(id)|(height)|(weight)', names(data))
### data frame method
df <- data.frame(data)
df[, index] <- lapply(df[, index], as.numeric)
### Failed attempt to reclass columns used the data.table method
data <- data[, lapply(index, as.character), with = F]
助けてください。データが大きいので、正規表現を使用して列番号のベクトルを作成して再分類する必要があります。
ありがとうございます。
+1それはそれだ!私の答えが間違っているので、私はそれを削除するつもりです。 –
いいえ、私はあなたとそのトリック( '.SDCols')を学んだので... – dickoa
(+1)あなたは' index'も直接渡すことができます。 '.SDcols'を使わずに、' data [、c(index):= lapply(.SD、as.character)、.SDcols = index] ' – Arun