我想在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值求和,并找出它们的差值。在本例中,它将是left=0.3+0.4+0.5+0.6=1.8,right=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有什么改进的建议吗?
发布于 2017-06-30 00:23:46
我们可以使用rleid来获取分组变量,获取每个组的‘sum’('ind')的范数,并获得差异
library(data.table)
ind <- rleid(norm<1)
diff(as.numeric(tapply(norm[ind!=2], ind[ind!=2], FUN = sum)))
#[1] 0.6https://stackoverflow.com/questions/44830240
复制相似问题