1

我有一组日期(来自 RQuantLib 的 as.Date)存储为 my_dates 中的列表或行

我想选择这个条件为真的第一个值

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

TodayDate<-as.Date(format(Sys.time(), "%Y%m%d"), "%Y%m%d")今天的日期在哪里。

谢谢你。

4

2 回答 2

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 回答
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
于 2013-04-08T15:52:11.610 回答