[英]R: sum vector's value under condition and resize vector
我有一個向量Pn
Pn<-c(10,6,7,5,8,1,2,2,3)
我需要對值求和,直到結果>= 5
並刪除我求和的值。 在這種情況下,我需要向量變為:
Pn= 10,6,7,5,8,1+2+2=5,3
最后一個值(3)可以確定,因為無法進行其他運算。 我正在嘗試使用for循環和while循環,但是有一個問題,因為length(Pn)減小了其尺寸
for (i in 1:(length(Pn)-1)) {
if (Pn[i]<5) {
j=i
while (Pn[j]<5 | j==length(Pn)) {
Pn[j]<-Pn[j]+Pn[j+1]
Pn=Pn[-(j+1)]
}
}
}
有沒有功能可以解決我的問題而無需循環?
盡管大多數R人討厭循環,但這是一個循環解決方案:
Pn<-c(10,6,7,5,8,1,2,2,3)
newPn <- vector()
while (length(Pn)>0)
{
a <- 0
while (a<5)
{
a <- a+Pn[1]
Pn <- Pn[-1]
if (length(Pn)==0) {break}
}
newPn <- c(newPn,a)
}
結果:
> newPn
[1] 10 6 7 5 8 5 3
一個更長的例子:輸入:
[1] 8 6 5 5 9 3 4 5 10 7 4 6 5 2 3 2 2 5 6 3 7 4 10 2 9 8 8 9 10 6
輸出:
[1] 8 6 5 5 9 7 5 10 7 10 5 5 9 6 10 14 11 8 8 9 10 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.