我想在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
有任何改进建议吗?
答案 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