2016-09-13 3 views
1

Я пытаюсь найти все субботу, воскресенье, понедельник, дни вокруг серии воскресенья. Я могу получить то, что я хочу, делая это:Как добавить несколько значений к каждому элементу вектора

alldays <- Sys.Date() + c(1:100) 
allSundays <- alldays[weekdays(alldays)=='Sunday'] 
length(allSundays) ## 7 elements 
nearby <- c(-1,0,1) 
result <- c(c(allSundays + nearby[1]),c(allSundays + nearby[2]),c(allSundays + nearby[3])) 
length(result) ## 21 elements. 

Но я надеюсь на более элегантный способ сделать это мои извинения, если это дубликат, (некоторые формы apply или какую-то темную data.table магию?) но я не мог придумать хороших условий поиска для этой (незначительной) проблемы.

ответ

2

Один из способов сделать то, что вы хотите повторяют свой вектор в воскресенье, рядом будет рецикл до нужной длины:

rep(allSundays, e=3) + nearby 

all(sort(result)==(rep(allSundays, e=3) + nearby)) 
#[1] TRUE 
+1

... и 'е (ACH)' элемент также получают их в хорошем хроном порядке с места в карьер. Благодаря! –