在两个方向上分别归一化归一化向量

时间:2017-06-29 16:12:04

标签: r

我想在R中分别在两个方向上对归一化向量求和。

例如,对于归一化0.3,0.4,0.5,0.6,1.0,0.9,0.8,07后的矢量3,4,5,6,10,9,8,7,我希望求和值<分别在左侧和右侧1找到它们的区别。在这种情况下,它将是左= 0.3 + 0.4 + 0.5 + 0.6 = 1.8,右= 0.9 + 0.8 + 0.7 = 2.4。差异将是右减去等于0.6。

以下是我的一些想法:

a <- c(3,4,5,6,10,9,8,7)
norm <- a/max(a)  # normalization
left <- sum(a[1:which.max(a)-1]) # left sum
right <- sum(a[which.max(a)+1:length(a)])  # right sum
diff <- right-left

有任何改进建议吗?

1 个答案:

答案 0 :(得分:0)

我们可以使用rleid获取分组变量,获取&#39;规范的sum&#39}。对于每个小组(&#39; ind&#39;)并获得差异

library(data.table)
ind <- rleid(norm<1)
diff(as.numeric(tapply(norm[ind!=2], ind[ind!=2], FUN = sum)))
#[1] 0.6
相关问题