我有一个包含以下变量的数据框
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
标准化的 x1 到 x6 创建一个新的数据框。我做了一个循环解决方案
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
}
有没有不使用循环的另一种解决方案?