Reading through the lubridate documentation, I found an answer.
library(lubridate)
date <- as.Date("2015-03-20")
previous_sunday <- floor_date(date, "week")
To get the previous monday, tues, etc. just add the required number of days:
(for monday)
day(date)<-day(date)+1
and substract 7 days if it is greater than the original date.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…