簡體   English   中英

R:條件向量和調整大小向量的總和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM