Ответ 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