已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
昨天关门了。
这篇文章是8小时前编辑并提交审查的。
Improve this question
我不知道这里有什么问题。这里trainX是一个 Dataframe ,只有数值,但当我使用刻度时仍然是这样()函数来规范它,它说,参数x应该是一个数值。而最烦人的是,当我的导师在做同样的事情时,那么没有问题发生,但当我尝试同样的事情时,它显示x应该是一个数值。
2条答案
按热度按时间dced5bon1#
预付款:
scale
* 可以 * 在整个data.frame
上工作,如果所有列都是数字的,例如,scale(mtcars)
,逐列或对整个对象运行scale
应该返回相同的结果(比较sapply(mtcars, scale)
和scale(mtcars)
)。我认为SALAR最大的收获是的建议是,当您的一个或多个列不匹配时,您将看到来自scale
的错误;比较,scale(iris)
,其中一列是factor
并且不应当被缩放。我认为最大的收获是你应该只缩放你知道是数值的列。我提供了两种机制(base和dplyr)来实现这一点。确保当你确定要缩放的列时,你不包括任何整数列,在那里缩放可能会破坏它们(例如,
mtcars$cyl
可能是一个问题)我猜:
scale
函数自称为处理 “Matrix-like Objects”,而帧不是这样,上面的lapply
函数迭代每一列并独立缩放它们。如果您已经在使用
dplyr
,那么您可以执行类似下面这样的一步操作:根据数据的不同,如果整数是离散/有序(或离散/分类)的,您可能需要防止缩放整数,不幸的是
is.numeric(1L)
为真,在这种情况下,您可能需要mccptt672#
我猜您的数据中混合了字符串和数字列。要确保您的数据具有正确的类型(
numeric
,character
,..),或者一些数字数据已更改为另一种类型,并将其恢复为原始类型,请使用type.convert()
并将scale
应用于您的数据: