2016-06-17 20 views

回答

2

試試這個辦法:

x[1:which(x < 0)[1]-1] 
4

您可以使用which找到第一個負號的位置,然後減去1

x[1:(which(x < 0)[1] - 1)] 

如果第一個數字是負數,則此簡單方法將失敗。但是我們可以建立一個檢查並根據需要返回一個空向量。

cutNeg <- function(x){ 
    index <- which(x < 0)[1] 
    if(index == 1) return(integer(0)) 
    x[1:(index-1)] 
} 

cutNeg(x) 
+0

如果你只是刪除括號,你將不再需要該功能(即'x [1:which(x <0)[1] -1]')。但是,我們有兩個相同的解決方案張貼! – 989

+0

當然,但它是一個好主意,使功能 –

5

另一種選擇是

x[!cumsum(x < 0)] 
#[1] 1 4 6 3 
+2

非常好的解決方案 –

1

我們還可以使用的cumsum一個朋友從@ akrun的答案,cummin其計算累積最小:

x[cummin(x) > 0] 
[1] 1 4 6 3 
1

搜索 「 - 」 使用grep也適用:

x[1:grep("-", x)[1]-1] 
相關問題