my_dates にリストまたは行として保存された一連の日付 (RQuantLib の as.Date) があります。
この条件が真となる最初の値を選択したい
businessDaysBetween("UnitedStates", TodayDate, my_dates)>10
TodayDate<-as.Date(format(Sys.time(), "%Y%m%d"), "%Y%m%d")
今日の日付はどこですか.
ありがとうございました。
値または最初の値のみが必要な場合、これは非常に簡単です。
ベクトルに条件ステートメントを適用すると、真/偽のベクトルが生成されます
true/false ベクトルは、ベクトルへのインデックスとして使用でき、条件が真である値の短いベクトルを返します。
例: 10 個の乱数を含むように x を初期化します。それぞれが 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
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
長さゼロのベクトルが返されます。