Ricerca…


Osservazioni

Quasi tutti gli operatori in R sono veramente funzioni. Ad esempio, + è una funzione definita come function (e1, e2) .Primitive("+") dove e1 è il lato sinistro dell'operatore ed e2 è il lato destro dell'operatore. Ciò significa che è possibile ottenere effetti piuttosto controintuitivi mascherando il + in base con una funzione definita dall'utente.

Per esempio:

`+` <- function(e1, e2) {e1-e2}

> 3+10
[1] -7

Gamma e aggiunta

Prendiamo un esempio di aggiunta di un valore a un intervallo (come potrebbe essere fatto in un ciclo per esempio):

3+1:5

dà:

[1] 4 5 6 7 8

Questo perché l'operatore di intervallo : ha una precedenza più alta rispetto all'operatore di addizione + .

Quello che succede durante la valutazione è il seguente:

  • 3+1:5
  • Espansione 3+c(1, 2, 3, 4, 5) dell'operatore di intervallo per creare un vettore di numeri interi.
  • c(4, 5, 6, 7, 8) Aggiunta di 3 a ciascun membro del vettore.

Per evitare questo comportamento devi dire all'interprete R come vuoi che ordini le operazioni con ( ) questo modo:

  (3+1):5

Ora R calcolerà cosa c'è dentro le parentesi prima di espandere l'intervallo e darà:

 [1] 4 5

Addizione e sottrazione

Le operazioni matematiche di base vengono eseguite principalmente su numeri o su vettori (elenchi di numeri).

1. Utilizzo di numeri singoli

Possiamo semplicemente inserire i numeri concatenati con + per aggiungere e - per sottrarre :

> 3 + 4.5
# [1] 7.5
> 3 + 4.5 + 2
# [1] 9.5
> 3 + 4.5 + 2 - 3.8
# [1] 5.7
> 3 + NA
#[1] NA
> NA + NA
#[1] NA
> NA - NA
#[1] NA
> NaN - NA
#[1] NaN
> NaN + NA
#[1] NaN

Possiamo assegnare i numeri alle variabili (costanti in questo caso) e fare le stesse operazioni:

> a <- 3; B <- 4.5; cc <- 2; Dd <- 3.8 ;na<-NA;nan<-NaN
> a + B
# [1] 7.5
> a + B + cc
# [1] 9.5
> a + B + cc - Dd
# [1] 5.7
> B-nan
#[1] NaN
> a+na-na
#[1] NA
> a + na
#[1] NA
> B-nan
#[1] NaN
> a+na-na
#[1] NA

2. Utilizzo dei vettori

In questo caso creiamo vettori di numeri e facciamo le operazioni usando quei vettori, o combinazioni con numeri singoli. In questo caso l'operazione viene eseguita considerando ogni elemento del vettore:

> A <- c(3, 4.5, 2, -3.8);
> A
# [1]  3.0  4.5  2.0 -3.8
> A + 2 # Adding a number 
# [1]  5.0  6.5  4.0 -1.8
> 8 - A # number less vector
# [1]  5.0  3.5  6.0 11.8
> n <- length(A) #number of elements of vector A
> n
# [1] 4
> A[-n] + A[n] # Add the last element to the same vector without the last element
# [1] -0.8  0.7 -1.8
> A[1:2] + 3 # vector with the first two elements plus a number
# [1] 6.0 7.5
> A[1:2] - A[3:4] # vector with the first two elements less the vector with elements 3 and 4
# [1] 1.0 8.3

Possiamo anche usare la funzione sum per aggiungere tutti gli elementi di un vettore:

> sum(A)
# [1] 5.7
> sum(-A)
# [1] -5.7
> sum(A[-n]) + A[n]
# [1] 5.7

Dobbiamo fare attenzione al riciclaggio , che è una delle caratteristiche di R , un comportamento che si verifica quando si eseguono operazioni matematiche in cui la lunghezza dei vettori è diversa. I vettori più brevi nell'espressione vengono riciclati tutte le volte che è necessario (forse in modo frazionale) finché non corrispondono alla lunghezza del vettore più lungo. In particolare, una costante viene semplicemente ripetuta . In questo caso viene visualizzato un avviso.

> B <- c(3, 5, -3, 2.7, 1.8)
> B
# [1]  3.0  5.0 -3.0  2.7  1.8
> A
# [1]  3.0  4.5  2.0 -3.8
> A + B # the first element of A is repeated
# [1]  6.0  9.5 -1.0 -1.1  4.8
Warning message:
In A + B : longer object length is not a multiple of shorter object length
> B - A # the first element of A is repeated
# [1]  0.0  0.5 -5.0  6.5 -1.2
Warning message:
In B - A : longer object length is not a multiple of shorter object length

In questo caso la procedura corretta sarà considerare solo gli elementi del vettore più breve:

> B[1:n] + A
# [1]  6.0  9.5 -1.0 -1.1
> B[1:n] - A
# [1]  0.0  0.5 -5.0  6.5

Quando si utilizza la funzione sum , vengono aggiunti di nuovo tutti gli elementi all'interno della funzione.

> sum(A, B)
# [1] 15.2
> sum(A, -B)
# [1] -3.8
> sum(A)+sum(B)
# [1] 15.2
> sum(A)-sum(B)
# [1] -3.8


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow