1

my_dates にリストまたは行として保存された一連の日付 (RQuantLib の as.Date) があります。

この条件が真となる最初の値を選択したい

businessDaysBetween("UnitedStates", TodayDate, my_dates)>10

TodayDate<-as.Date(format(Sys.time(), "%Y%m%d"), "%Y%m%d")今日の日付はどこですか.

ありがとうございました。

4

2 に答える 2

0

値または最初の値のみが必要な場合、これは非常に簡単です。

ベクトルに条件ステートメントを適用すると、真/偽のベクトルが生成されます

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
于 2013-04-08T15:52:11.610 に答える
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")
}

に少なくとも1 つのTRUE観測値があることを確認する必要があることに注意してくださいbizday_gt10。それ以外の場合は、which長さゼロのベクトルが返されます。

于 2013-04-08T15:42:49.817 に答える