Имеет ли R хорошую производительность для условной векторизации дорогих функций? - PullRequest
0 голосов
/ 07 марта 2020

Мне нужно оценить две функции f и g (которые обе являются вычислительно дорогими) поэлементно, в зависимости от результата test. Преимущество ifelse заключается в том, что он выполняет векторизованное тестирование и возвращает только подходящие элементы из f и g. Так что если у нас есть

ifelse(test, f(y), g(y))

, где y некоторый большой вектор ifelse возвращает вектор length(y) с элементами f(y), где test==T и g(y) else.

Сделано ли это вычислительно эффективно? Этого не произойдет, когда ifelse сначала оценивает и f, и g для all y, а затем возвращает только те элементы результирующих двух векторов возврата, которые указаны в результате теста. Это было бы, если бы он только оценил f, где test==T и g для всех остальных; тем самым экономя время вычислений для тех элементов, для которых f и g не возвращаются.

Является ли ifelse лучшим способом выполнить эту задачу для дорогих функций? Что может быть лучше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...