考虑以下矩阵:
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
但这涉及到额外变量的使用,有没有更优雅的解决方案?