如果我想标准化第 2 列和第 3 列(每列分别标准化),这行得通吗?
df[c(2:3)] <- scale(df[c(2:3)])
根据?scale
scale 的值决定了如何执行列缩放(居中之后)。如果 scale 是一个类似数字的向量,其长度等于 x 的列数,则 x 的每一列都除以来自 scale 的相应值。如果 scale 为 TRUE,则缩放是通过将 x 的(居中的)列除以它们的标准差来完成的,如果 center 为 TRUE,否则为均方根。如果 scale 为 FALSE,则不进行缩放。
作为测试,我们可以在每一列上单独执行此操作,也可以作为一个整体执行此操作
data(mtcars)
out1 <- sapply(mtcars, scale)
out2 <- scale(mtcars)
all.equal(out1, out2, check.attributes = FALSE)
#[1] TRUE
它对scale
每一列分别执行