2016-04-23 87 views
0

我有一個名爲KeyDates的日期向量,其中包含兩個關鍵日期。我想按時間順序創建一個名爲KeyDatesPlus的新日期向量,其中包含這兩個關鍵日期和兩天之後。添加一天到日期向量中的每個日期

KeyDates <- structure(c(15159,15165), class = "Date") 

#KeyDates Output: 
[1] "2011-07-04" "2011-07-10" 

#desired output for KeyDatesPlus: 
[1] "2011-07-04" "2011-07-05" "2011-07-10" "2011-07-11" 

我怎麼能做到這一點?非常感謝你。

回答

1
sort(c(KeyDates, KeyDates + 1)) 
[1] "2011-07-04" "2011-07-05" "2011-07-10" "2011-07-11" 
0
KeyDates <- structure(c(15159,15165), class = "Date") 
KeyDatesPlus <- KeyDates+1 
KeyDatesPlus <- sort(unique(c(KeyDates, KeyDatesPlus))) 
+0

許多類似的答案同時出現。我會離開我的,因爲它是唯一包含唯一的,如果原始列表中的兩個日期連續可能需要 – dww

1
structure(sapply(KeyDates, "+", (0:1)), class = "Date") 
[1] "2011-07-04" "2011-07-05" "2011-07-10" "2011-07-11" 

或者:

as.Date(sapply(KeyDates, "+", (0:1))) 
[1] "2011-07-04" "2011-07-05" "2011-07-10" "2011-07-11" 
+0

你試過了:'KeyDates +(0:1)'?使用Vectorize的核心「mapply」獲得了潛在的有用結果,但它看起來甚至比我的sapply方法更有效率。我試圖(不成功)找到一些給出參數的cartesion產品但沒有刪除class屬性的東西。 –

+0

沒錯。但我正在嘗試一些不需要排序的東西。我猜想不同的美學。 –

+0

好的,那麼。我想我明白你的觀點。 –

1
KeyDates <- structure(c(15159,15165), class = "Date") 
KeyDates.plus <- as.Date(sapply(KeyDates, function(x) c(x, x+1)))