t**i 发帖数: 688 | 1 例如给定:2004-11-12,2004-11-17,2004-11-18,2004-11-23的话,那么,
2004-11-13, 2004-11-14,2004-11-15,2004-11-16,2004-11-19,2004-11-20,
2004-11-21,2004-11-22
就是想要的。
想要用R来写。我用setdiff。可是对于给定的首尾日期,如何列举所有的日期是个问题。想看看有没有好的方法。 | q**j 发帖数: 10612 | 2 what is wrong with setdiff()? i do not see many alternatives. | t**i 发帖数: 688 | 3 对于给定的首尾日期,如何列举所有的日期是个问题。想看看有没有好的方法。 | s*****n 发帖数: 2174 | 4 setdiff 挺好的, 简明易懂, 一般用途足可以了, 唯一的缺点可能是速度稍慢. 如果
你非常在意执行效率(速度), 可以考虑is.element.
> list1 <- as.Date(c("2004-11-12", "2004-11-17", "2004-11-18", "2004-11-23"))
> list2 <- seq(from = min(list1), to = max(list1), by = "1 day")
>
> system.time(for (i in 1:10000) setdiff(list2, list1))
[1] 2.46 0.00 2.47 NA NA
> system.time(for (i in 1:10000) list2[!is.element(list2, list1)])
[1] 0.67 0.00 0.67 NA NA | t**i 发帖数: 688 | 5 I overlooked seq function. Thx |
|