2015-05-05 11 views
11

Das ist eine Anfängerfrage.Raise to power in R

  1. Was ist der Unterschied zwischen ^ und **? Zum Beispiel:

    2^10 
    
    [1] 1024 
    
    2 ** 10 
    
    [1] 1024 
    
  2. Gibt es eine Funktion wie power(x,y)?

+5

' '**'': '** ist in dem Parser ^' – rawr

+0

übersetzt @rawr Danke. Ich hätte die ganze Seite der Dokumentation lesen sollen. Es heißt: '** wird im Parser in^übersetzt, aber das war viele Jahre lang undokumentiert. ... ' – Nick

+2

Eingabe von' ** 'an der Befehlszeile gibt auch 'Fehler: unerwartet'^'in" ** "' – thelatemail

Antwort

14

1: Kein Unterschied. Es wird beibehalten, damit der alte S-Code weiterhin funktioniert. Dies ist eine „Note“

2 in ?Math dokumentiert: Ja: Aber Sie bereits wissen es:

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

In R die mathematischen Operatoren funktioniert wirklich, dass der Parser übernimmt Argumente und Funktionsnamen Neuanordnung für Sie simulieren gewöhnliche mathematische Infixnotation. Auch dokumentiert unter ?Math.

Edit: Lasst mich hinzufügen, dass das Wissen, wie R Infixoperatoren (dh zwei Argumentfunktionen) behandelt, sehr wichtig ist, um die Verwendung des grundlegenden Infix "[[" und "[" - Funktionen als (funktionale) zweite Argumente zu verstehen lapply und 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, die Funktion mit Präfix-Notation ist eine kleine Überraschung! Vielen Dank! – Nick

+8

Interessant, dass '\' ** ('2,10)' nicht funktioniert. – thelatemail

+0

Stimme zu, das ist eine Überraschung. 'is.function (' '' ** '' '') # Fehler: Objekt '**' nicht gefunden '(es gab Backticks in diesen Klammern.) –