У меня есть фрейм данных со следующими переменными
dat <- data.frame(cell.ID = 1:10, cell.name = letters[1:10],
groupID = rep(1:2, each = 5),
x1 = rnorm(10), x2 = rnorm(10),
x3 = rnorm(10), x4= rnorm(10),
x5 = rnorm(10), x6 = rnorm(10))
У меня есть среднее значение и sd, сохраненные для нормализации x1 к x6 в другом фрейме данных
norm_fin <- data.frame(variable = paste0('x',1:6),
meanVar = rnorm(6),
SdVar = rnorm(6))
Я хочу создать новый фрейм данных от dat
после нормализации х1 до х6. Я сделал решение al oop
varVec <- paste0('x',1:6)
dat1 <- dat
for(i in varVec){
meanRef <- norm_fin$meanVar[norm_fin$variable == i]
sdRef <- norm_fin$SdVar[norm_fin$variable == i]
dat1[, i] <- (dat[, i] - meanRef)/sdRef
}
Есть ли другое решение без использования al oop?