2

knn を使用しているデータフレームの 1 つの列を除くすべてを標準化する必要があります。ループでこれを実行できることはわかっていますが、特に名前を変更する必要がある200以上の列/要素を使用しているため、もっと簡単な方法があるようです。

助言がありますか?

4

1 に答える 1

5

はい。列の位置で変数を識別するのではなく、名前に基づいて変数をスケーリングしないように識別することをお勧めします。おもちゃの例がなければ、これがまさにあなたが望むものであると推測することしかできません.

x <- data.frame(replicate(10, rnorm(10)))
names(x) <- letters[1:10]

##let's say you don't want to scale "b"
scalevars <- setdiff(names(x), "b")
x.scaled <- data.frame(sapply(x[,scalevars], scale),b=x[,"b"])
x.scaled <- x.scaled[,names(x)] #to get the original order of variables
于 2012-07-25T22:37:10.043 に答える