R规范化多列

R Normalize Many Columns

data = data.frame(cat = runif(1000), dog = runif(1000), fox = runif(1000), bunny = runif(1000))
normalize_these = c("dog", "bunny")

我希望获得一个名为dataNEW的新版本数据,其中'normalize_these'中列出的变量列被归一化为均值等于0,标准差等于1。是否有data.table解决方案这样做?

像下面那样尝试 scale

cbind(data, `colnames<-`(scale(data[normalize_these]), paste0(normalize_these, "NEW")))

如果您想使用 data.table,下面可能是一个选项

setDT(data)
data[, paste0(normalize_these, "NEW") := lapply(.SD, scale), .SDcols = normalize_these]