Я попытался измерить скорость этих двух способов для принятия квадратного корня:Почему ** 0,5 оказываются более эффективными, чем SQRT()
> system.time(expr = replicate(10000, 1:10000 ** (1/2)))
## user system elapsed
## 0.027 0.001 0.028
> system.time(expr = replicate(10000, sqrt(1:10000)))
## user system elapsed
## 3.722 0.665 4.494
Если функция sqrt()
не может конкурировать с ** 0.5
, почему нам нужна такая функция?
(система OS X Yusemite и R версия 3.1.2)
См. «Синтаксис» для приоритета оператора. Экспоненциальность '^' имеет более высокий приоритет, чем оператор последовательности ':'. Сравнить '1: 4^(0.5)'; '1: (4^(0,5))'; '(1: 4)^(0,5)' – Henrik
Прежде чем сравнивать два альтернативы, вы всегда должны проверить, что они дают одинаковые результаты. – Roland