У меня есть два вектора:
smaller_array <- c(50, 60, 70, 75, 80, 85, 90, 95, 100, 105)
moneyness_cert <- c(105.8138, 105.7155, 105.4637, 104.5942, 105.0757, 105.316, 104.641,
105.0637, 105.461, 104.971, 105.2471, 105.1348, 105.638, 105.8024,
105.592, 104.9338, 105.0133, 104.613, 104.9407, 105.0136, 107.2144,
107.0112, 105.7793, 106.4742, 105.5703, 106.0615, 106.3446, 105.7296,
105.1307, 104.6472, 103.6721, 104.607, 105.1265, 105.2077, 104.363,
104.5036, 104.2205, 104.9135, 103.8404, 105.1506, 105.8887, 105.0894,
104.3529, 103.0007, 103.0904, 103.334, 103.2959, 103.4819, 103.504,
102.7641, 102.5911, 102.5386, 102.843, 103.8211, 102.3814, 105.265,
104.3255, 104.1589, 105.6462, 107.0716, 106.5527, 104.655, 103.1285,
102.3955, 102.8577) #length of vector is 65
Я хочу найти для каждого значения moneyness_cert значение, которое ближе всего к нему в lower_array. Найденные значения должны быть сохранены в векторе (например, "result_vector")
Пример для 64-го элемента в moneyness_cert:
moneyness_cert = 102.3955
, а затем вернуть в lower_array значение "100 "
и сохранить его в result_vector в месте 64
Я пытался (который дал бесполезные результаты); match.closest-function из MALDIquant-Package:
> match.closest(x = moneyness_cert, table = sort(smaller_array, decreasing = F), tolerance = Inf, nomatch = NA)
[1] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
[26] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
[51] 10 10 10 10 9 10 10 10 10 10 10 10 10 9 10
Еще одна попытка была:
> apply(smaller_array, 1 , function(x) moneyness_cert - x)
Error in apply(smaller_array, 1, function(x) moneyness_cert - x) :
dim(X) must have a positive length
Через lapply он тоже не работал.
Может кто-нибудь помочь меня?
Большое спасибо!