次のマトリックスを検討してください。
x <- matrix(c(1,1,1,3),2)
x
[,1] [,2]
[1,] 1 1
[2,] 1 3
これを呼び出すscale
と、NaN
分散がゼロの最初の列の値が返されます。
scale(x)
[,1] [,2]
[1,] NaN -0.7071068
[2,] NaN 0.7071068
attr(,"scaled:center")
[1] 1 2
attr(,"scaled:scale")
[1] 0.000000 1.414214
しかし、私はそれが戻ってくることを期待してい0
ます. これはバグですか、それともこれが何であり、返すべきかを誤解していますか?
私が欲しいものの回避策は次のとおりです。
y <- scale(x)
y[is.nan(y)] <- 0
しかし、これには追加の変数の使用が含まれます。より洗練された解決策はありますか?