我有一组日期(来自RQuantLib的日期)存储为my_dates中的列表或行
我想选择此条件为真的第一个值
businessDaysBetween("UnitedStates", TodayDate, my_dates)>10
TodayDate<-as.Date(format(Sys.time(), "%Y%m%d"), "%Y%m%d")
今天是日期。
谢谢。
答案 0 :(得分:0)
对which
来电的结果使用businessDaysBetween
。
set.seed(21)
my_dates <- Sys.Date()+sample(50,10)
bizday_gt10 <- sapply(my_dates, businessDaysBetween,
calendar="UnitedStates", from=Sys.Date()) > 10
if(any(bizday_gt10)) {
first_bizday_gt10 <- which(bizday_gt10)[1]
my_dates[first_bizday_gt10]
} else {
stop("no business days between today and today+10")
}
请注意,您需要在TRUE
中检查至少 1 bizday_gt10
观察,否则which
将返回零长度向量。
答案 1 :(得分:0)
如果您只想要值或第一个值,这可以非常简单。
应用于矢量的条件语句会产生真/假矢量
真/假向量可以用作向量的索引,并返回条件为真的值的较短向量。
示例:初始化x以包含10个随机数。每个人都大于0.7吗?现在返回大于0.7的那些。然后返回第一个。
x = rnorm(10)
x
[1] -0.96029244 0.41779224 0.08058894 -0.02026729 -0.65383370 -0.83572926
[7] 0.92722221 0.49157700 0.88779718 -1.09073923
x>0.7
[1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE
x[x>0.7]
[1] 0.9272222 0.8877972
first one...
x[x>0.7][1]
[1] 0.9272222