将函数应用于向量

时间:2013-04-08 15:40:53

标签: r quantlib

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

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

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

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

谢谢。

2 个答案:

答案 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