我正在使用函數ifelse()
來操作日期向量。我預計結果是類Date
,並且很驚訝地得到一個numeric
向量。下面是一個例子:如何防止將日期對象轉換爲數字對象ifelse()
dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'))
dates <- ifelse(dates == '2011-01-01', dates - 1, dates)
str(dates)
這是特別令人驚訝,因爲在整個向量執行所述操作返回一個Date
對象。
dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04','2011-01-05'))
dates <- dates - 1
str(dates)
我應該使用一些其他功能來操作Date
載體嗎?如果是這樣,什麼功能?如果不是,我該如何強制ifelse
返回與輸入相同類型的向量?
ifelse
的幫助頁面表示這是一個功能,而不是一個錯誤,但我仍然努力尋找一個解釋,我發現這是令人驚訝的行爲。
現在有一個函數'if_else()'在dplyr包可以代替'ifelse'同時保留正確的類Date對象的作爲最近的回答,它是[下面發佈](http://stackoverflow.com/a/38093096/4470365)。我在這裏關注它,因爲它通過提供一個在CRAN包中進行單元測試和記錄的函數來解決這個問題,而不像其他許多答案(就此評論而言)排名靠前。 –