考虑以下矩阵:
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。这是一个bug,还是我误解了这是什么并且应该返回?
我想要的解决办法是:
y <- scale(x)
y[is.nan(y)] <- 0但这涉及到额外变量的使用,有没有更好的解决方案?
发布于 2013-03-12 22:24:39
因为scale除以方差,所以它必须这样做。
连续变量真的不应该有联系,更不用说零方差了,而且不适合缩放离散或分类变量。
https://stackoverflow.com/questions/15363610
复制相似问题