2015-05-05 11 views
11

Questa è una domanda per principianti.Alza al potere in R

  1. Qual è la differenza tra ^ e **? Per esempio:

    2^10 
    
    [1] 1024 
    
    2 ** 10 
    
    [1] 1024 
    
  2. Esiste una funzione come power(x,y)?

+5

' '**'': '** si traduce nel parser per ^' – rawr

+0

@rawr Grazie. Avrei dovuto leggere l'intera pagina della documentazione. Dice: '** è tradotto nel parser in ^, ma questo non è documentato da molti anni. ... ' – Nick

+2

Inserendo' ** 'alla riga di comando si ottiene anche' Errore: imprevisto '^' in "**" ' – thelatemail

risposta

14

1: Nessuna differenza. È tenuto in giro per consentire al vecchio codice S di continuare a funzionare. Questo è documentato una "Nota" in ?Math

2: Sì: Ma tu già lo sai:

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

in R gli operatori matematici sono funzioni davvero che il parser si prende cura di riordinare gli argomenti e nomi di funzioni per simulare la notazione matematica infissa ordinaria. Anche documentato a ?Math.

Edit: Vorrei aggiungere che il saper R gestisce operatori infissi (cioè due funzioni argomenti) è molto importante per capire l'uso del infisso fondamentale "[[" e "[" -Funzioni come (funzionali) il secondo argomento a lapply e 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, la funzione con notazione prefisso è una piccola sorpresa! Grazie! – Nick

+8

Interessante che '\' ** \ '(2,10)' non funziona. – thelatemail

+0

D'accordo, è una sorpresa. 'is.function (' '' ** '' '') # Errore: oggetto '**' non trovato' (c'erano dei backtick all'interno di quelle parentesi). –

Problemi correlati