我有一组日期(来自 RQuantLib 的 as.Date)存储为 my_dates 中的列表或行
我想选择这个条件为真的第一个值
businessDaysBetween("UnitedStates", TodayDate, my_dates)>10
TodayDate<-as.Date(format(Sys.time(), "%Y%m%d"), "%Y%m%d")
今天的日期在哪里。
谢谢你。
使用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")
}
请注意,您需要检查 中是否至少有1 个TRUE
观察值bizday_gt10
,否则which
将返回一个长度为零的向量。
如果您只需要值或第一个值,这可能非常简单。
应用于向量的条件语句会产生真/假向量
真/假向量可用作向量的索引,并返回条件为真的值的较短向量。
示例:初始化 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