R 将函数应用于向量

R 将函数应用于向量,r,quantlib,R,Quantlib,我有一组日期,如RQuantLib中的.Date,存储为my_dates中的列表或行 我想选择此条件为真的第一个值 businessDaysBetween("UnitedStates", TodayDate, my_dates)>10 where TodayDate根据您的工作日通话结果使用 请注意,您需要检查bizday_gt10中是否至少有1个真观测值,否则将返回零长度向量。如果您只需要值或第一个值,这可能非常简单 应用于向量的条件语句将生成真/假向量 真/假向量可以用作向量的索引,

我有一组日期,如RQuantLib中的.Date,存储为my_dates中的列表或行

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

businessDaysBetween("UnitedStates", TodayDate, my_dates)>10
where TodayDate根据您的工作日通话结果使用


请注意,您需要检查bizday_gt10中是否至少有1个真观测值,否则将返回零长度向量。

如果您只需要值或第一个值,这可能非常简单

应用于向量的条件语句将生成真/假向量

真/假向量可以用作向量的索引,并在条件为真时返回较短的值向量

示例:初始化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

这不起作用,因为businessDaysBetween不喜欢数组,它只接受单个值:businessDaysBetween UnitedStates,TodayDate,calls_expiration为my_dates生成4可能的策略:制作包装函数,与此函数和数据向量一起使用以获得daysbetween的向量,然后使用矢量友好methods@Sergey当前位置您在问题中没有提到这一点,也没有提供可复制的示例,因此我不知道这是您面临的实际问题。不管怎样,我已经更新了我的答案。非常感谢约书亚和保罗。我是R新手,通常甚至很难用正确的R语言来描述这个问题。我综合了你的两个答案,得到的结果是:`my_dates[sapplyas.Datemy_dates,businessDaysBetween,calendar=UnitedStates,from=Sys.Date>1][1]`@Sergey:这就是为什么你应该提供一个可复制的例子;这样问题就更加明显了。您的组合答案是危险的,因为我在回答中指出:逻辑比较可能没有真值,在这种情况下,您的my_日期子集将是一个零长度向量。。。如果你尝试将其子集化,就会得到NA。然后你会回来问另一个问题,为什么它不起作用这在我的情况下不起作用:>我的工作日期[1]2013-04-12 2013-04-19 2013-05-17 2013-06-21 2013-07-19 2013-10-18 2014-01-17 2015-01-16>美国之间的营业日,系统日期,as.Date我的工作日期[1]4。出于某种原因,这个函数只返回一个值。非常感谢Joshua和Paul。我是R新手,通常甚至很难用正确的R语言来描述这个问题。我结合了你的两个答案,得到的结果是:`my_dates[sapplyas.Datemy_dates,businessDaysBetween,calendar=UnitedStates,from=Sys.Date>1][1]`尝试创建一个单参数函数,替换。。。使用上面的完整函数调用:myBizDays@Sergey我承认我不经常将sapply与其他参数一起使用,通常使用包装器重写复杂函数调用,以便只有一个参数。如果你的单行线适合你,那就太好了!
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