我有一个数据集,其中我使用许多变量的平均中心化和标准化版本。在我的R代码中,我有一个大型的scale()函数列表,适用于所有变量,但我想知道是否有一种方法编写一个简单的函数来优化此过程。
例如:不要像这样拥有一个巨大的列表...
例如:不要像这样拥有一个巨大的列表...
df$Z.ROW1 <- scale(df$ROW1, scale=T)
df$Z.ROW2 <- scale(df$ROW2, scale=T)
df$Z.ROW3 <- scale(df$ROW3, scale=T)
.....
有没有一种方法可以编写一个函数,根据我指定要标准化的变量,在数据框的末尾创建新向量并将它们添加到其中?
我在网上找到了这个 示例:
set.seed(212)
df = matrix(rnorm(15), 5, 5))
colnames(df) <- c("ROW1", "ROW2", "ROW3", "ROW4", "ROW5")
df
ROW1 ROW2 ROW3 ROW4 ROW5
[1,] -0.2391731 0.1544909 0.1503488 -0.2391731 0.1544909
[2,] 0.6769356 1.0368712 0.5096765 0.6769356 1.0368712
[3,] -2.4403360 -0.7796077 -0.7733148 -2.4403360 -0.7796077
[4,] 1.2408845 0.6212641 1.8756660 1.2408845 0.6212641
[5,] -0.3265144 0.2994313 0.7883057 -0.3265144 0.2994313
center.scale <- function(z) {
scale(z, scale = T)
}
center.scale(df[,c("ROW1", "ROW2")])
ROW1 ROW2
[1,] -0.01534097 -0.1657064
[2,] 0.63734894 1.1398052
[3,] -1.58357932 -1.5477370
[4,] 1.03913941 0.5249004
[5,] -0.07756806 0.0487378
这个方法接近解决了问题,但是它没有解决创建新向量并将它们附加到现有数据集末尾的问题。理想情况下,我希望只需要更改center.scale()函数中的变量名称即可。谢谢!
cbind
)即可? - Dason