2015-05-05 10 views
11

To jest pytanie dla początkujących.Podnieś do władzy w R

  1. Jaka jest różnica między ^ i **? Na przykład:

    2^10 
    
    [1] 1024 
    
    2 ** 10 
    
    [1] 1024 
    
  2. Czy istnieje funkcja takie jak power(x,y)?

+5

' '**'': '** jest tłumaczone przez parser do ^' – rawr

+0

@rawr dziękuję. Powinienem przeczytać całą stronę dokumentacji. Mówi: '** jest tłumaczone w parserze na ^, ale to było nieudokumentowane przez wiele lat. ... ' – Nick

+2

Wprowadzenie' ** 'w linii poleceń daje również' Błąd: nieoczekiwany '^' w "**" ' – thelatemail

Odpowiedz

14

1: Bez różnicy. Jest trzymany tak, aby stary kod S mógł nadal działać. To jest udokumentowane „Uwaga” w ?Math

2: Tak: Ale ty już o tym wiesz:

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

W R operatory matematyczne są naprawdę działa, że ​​parser dba o rozmieszczanie argumenty i nazwy funkcji dla możesz symulować zwykłą matematyczną notację infiksów. Również udokumentowane na ?Math.

Edycja: Pozwolę sobie dodać, że wiedza jak R radzi sobie z operatorami infiksów (tj. Dwiema funkcjami argumentów) jest bardzo ważna dla zrozumienia użycia fundamentalnego infikssu "[[i inne funkcje jako argumenty funkcyjne lapply i 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 
+0

Wow, funkcja z notacją prefiksu jest małą niespodzianką! Dziękuję Ci! – Nick

+8

Interesujące, że '\' ** \ '(2,10)' nie działa. – thelatemail

+0

Zgadzam się, to niespodzianka. 'is.function (' '' '' '' ') # Błąd: obiekt '**' not found' (w nawiasie znajdowały się numery wewnętrzne). –

Powiązane problemy