是否有一种简单的方法来标准化表中没有循环的每一列(使用R)?

时间:2012-07-25 22:23:01

标签: r loops transform normalize

我需要标准化除数据框中的一列之外的所有列,我使用的是knn。我知道我可以用循环来做到这一点,但似乎可能有一种更简单的方法,特别是因为我正在处理200多列/因子,这些都必须重命名。

有什么建议吗?

1 个答案:

答案 0 :(得分: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