См. Код R ниже.Функция (someRfunction) работает с вектором и возвращает скалярное значение.Данные представляют собой пары (x, y), где x и y - векторы длины n, которые могут быть большими.
Я хочу знать значение x *, чтобы результат функции someRfunction для y, где {x> x *}, был максимальным.Функция работает со значениями y и немонотонна по x *.Мне нужно оценить для всех х * (т.е. каждый элемент х).Скорость не является проблемой, если выполняется один раз, но код будет выполняться много раз в симуляции.Есть ли способ сделать этот код более эффективным / быстрым?
### x and y are vectors of length n
### sort x and y such that they are ordered by descending x
xord <- x[order(-x)]
yord <- y[order(-x)]
maxf <- -99999
maxcut <- NA
for (i in 1:n) {
### yi is a subvector of y that corresponds to y[x>x{i}]
### where x{i} is the (n-i+1)th order statistic of x
yi <- yord[1:(i-1)]
fxi <- someRfunction(yi)
if (fxi>maxf) {
maxf <- fxi
maxcut <- xord[i]
}
}
Спасибо.
Изменить: let someRfunction (yi) = t.test (yi) $ статистика.