首页 文章

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

提问于
浏览
0

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

例如,对于标准化后的矢量3,4,5,6,10,9,8,7 0.3,0.4,0.5,0.6,1.0,0.9,0.8,07 . 我想在左边的值<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

    我们可以使用 rleid 获取分组变量,获取每组'norm'的 sum ('ind')并获得差异

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

相关问题