在时间序列数据库中,是否有一种干净的方法可以将数据帧的每一行除以平方变量之和----其中事件是行,列是变量---。目前,我的方法是以下
for(i in 1:nrow(base)){
base[i,] <- base[i,]/(as.numeric(t(c(base[i,]))) %*% as.numeric(t(c(base[i,]))))
}
为了使用%*%
运算符,我找到的唯一方法是上面显示的使用as.numeric %>% t %>% c
机制的方法,它看起来并不干净。
为了一个可重复的例子:
base <-structure(list(Var1 = c(920, 734, 1001, 1033, 752, 837, 734,
817), Var2 = c(4861, 4966, 4855, 3835, 4782, 5348, 4648, 4595
), Var3 = c(5011, 4618, 2718, 4344, 4872, 5076, 4678, 4563),
Var4 = c(4785, 4610, 4697, 4149, 4693, 4866, 4517, 3271),
Var5 = c(5101, 4220, 4444, 4301, 965, 4557, 3524, 4201),
Var6 = c(5059, 4048, 4217, 4397, 3711, 4032, 5478, 4051),
Var7 = c(2134, 1766, 1640, 1837, 1662, 1711, 1838, 1625)), .Names = c("Var1",
"Var2", "Var3", "Var4", "Var5", "Var6", "Var7"), class = c("data.table",
"data.frame"), row.names = c(NA, -8L), .internal.selfref = <pointer: 0x1b8ec38>)
答案 0 :(得分:4)
我还会质疑标准化的含义,但这是一种更简单的方法来完成你在for循环中所做的事情:
=-