Поднять к власти в R

Это вопрос для начинающих.

  • Какая разница между ^ и **? Например:

    2 ^ 10
    
    [1] 1024
    
    2 ** 10
    
    [1] 1024
    
  • Есть ли такая функция, как power(x,y)?

Ответ 1

1: Никакой разницы. Он поддерживается, чтобы старый S-код продолжал функционировать. Это документировано "Примечание" в ?Math

2: Да: Но вы уже это знаете:

`^`(x,y)
#[1] 1024

В R математические операторы - это действительно функции, которые парсер заботится о переупорядочении аргументов и имен функций, чтобы вы могли моделировать обычную математическую инфиксную нотацию. Также задокументировано в ?Math.

Изменить: добавлю, что знание того, как R обрабатывает операторы инфикс (т.е. две функции аргументов), очень важно для понимания использования основополагающего инфикса "[[" и "[" -функции как (функциональные) второму аргументу для lapply и sapply:

> sapply( list( list(1,2,3), list(4,3,6) ), "[[", 1)
[1] 1 4
> firsts <- function(lis) sapply(lis, "[[", 1)
> firsts( list( list(1,2,3), list(4,3,6) ) )
[1] 1 4