Чтобы получить соответствующие строки, мы можем использовать
Map(function(cl, p) cl[which.min(abs(p - cl$Strike)), ], calls, price$Last)
# [[1]]
# Strike Last Chg Bid Ask Vol OI
# AAPL190104C00148000 148 0.3 0.21 0.24 0.42 43235 4344
#
# [[2]]
# Strike Last Chg Bid Ask Vol OI
# MSFT190104C00102000 102 0.04 0 0.02 0.09 6397 3250
#
# [[3]]
# Strike Last Chg Bid Ask Vol OI
# GS190104C00175000 175 0.25 0.13 0 0.25 2624 678
, где
price$Last
# [1] 148.26 101.93 175.05
В этом случае lapply
- не лучший вариант, поскольку нам приходится работать с двумя объектами одновременно: price
и calls
. В этом случае mapply
и Map
выполняют работу, при этом Map
совпадает с mapply
с SIMPLIFY = FALSE
.
Итак, мы переходим одновременно calls
и price$Last
и применяем
function(cl, p) cl[which.min(abs(p - cl$Strike)), ]