我有4个载体:
a <- c(1.12,2.30,3.03,4.05)
b <- c(2.03,3.05,4.02,5.03)
c <- c(1.5, 1.6, 1.7, 2.1, 3.3, 3.7,4.1)
v <- c(2,3,3,2,17,13,50)
我想做的是我想对向量v中的值求和,如果它是向量c的代表,并且向量c中的数字序列在a [i]和b [i]之间我想要将向量v中的数字加在一起并将它们存储在新向量中。
因此数字1.5,1.6,1.7在[1]和b [1]之间,使得a [1] <1。 c [1],c [2],c [3]&lt; b [1],因此新向量中的总和是2 + 3 + 3 = 8.我想将这个数字存储在一个新的向量中,然后转到[2]和b [2]并将数字与再次。这是我到目前为止,但它给了我一个错误:(。
a <- c(1.12,2.30,3.03,4.05)
b <- c(2.03,3.05,4.02,5.03)
c <- c(1.5, 1.6, 1.7, 2.1, 3.3, 3.7,4.1)
v <- c(2,3,3,2,17,13,50)
i = 1
j = 1
k = 1
p = 1
S1 = NULL
U1 = NULL
while (i < length(c) & j < length(a))
{
if (c[i] > a[j] & c[i] <= b[j])
{
S1[i] <- (v[i])
}
i = i + 1
U1[k] <- sum(S1)
else
{
j = j + 1
k = k + 1
}
}
答案 0 :(得分:2)
您应该查看?cut
和?split
,例如:
c <- c(1.5, 1.6, 1.7, 2.1, 3.3, 3.7)
v <- c(2,3,3,2, 17,13)
## create corresponding intervals
splits <- cut(c, breaks=1:4)
## split v into intervals and sum them
lapply(split(v, f=splits), sum)
# $`(1,2]`
# [1] 8
#
# $`(2,3]`
# [1] 2
#
# $`(3,4]`
# [1] 30