R è un linguaggio a tipizzazione dinamica, quindi in generale non è necessario specificare il tipo di una variabile. L'operatore di assegnazione preferito è <-
x <- 42
avogadro <- 6.02e23
mystr <- "Hello, World!"
Usare = al posto di <- spesso funziona, ma non sempre, ed è sconsigliato perché è cattivo stile.
Se lavori in RStudio, puoi inserirlo con la scorciatoia da tastiera Alt-minus.
Gli operatori sono per lo più convenzionali, ma fai attenzione a %/% e %%:
2 + 3 # 5
2 - 3 # -1
2 * 3 # 6
2 / 3 # 0.6666667
8 %/% 3 # 2 (integer division)
8 %% 3 # 2 (remainder)
2 ^ 3 # 8 (exponential)
In R, # inizia un commento su una sola riga.
Non esiste una sintassi separata per i commenti su più righe.
Per definire una funzione:
squareit <- function(x) {
x * x
}
Le funzioni possono avere zero o più argomenti, separati da virgole.
Le parentesi tonde (()) sono necessarie con function(), anche se non ci sono parametri.
Si possono specificare valori predefiniti per gli argomenti di una funzione, ma questi devono venire dopo tutti gli argomenti senza valore predefinito, e per assegnare il valore predefinito si usa =, non <-.
Un esempio piuttosto inutile:
squareit <- function(x = 42) {
x * x
}
squareit()
#> [1] 1764
Le parentesi graffe ({ }) non sono strettamente necessarie per i corpi di funzione su una sola riga, ma includerle è considerato buono stile.
R restituisce automaticamente il valore finale di una funzione, come negli esempi qui sopra.
return() può essere usata in qualsiasi punto del corpo della funzione per rendere esplicito il valore restituito.
Chiamare una funzione è come in molti altri linguaggi:
squareit(3)
#> [1] 9
In questo esercizio scriverai del codice per aiutarti a cucinare una lasagna eccezionale dal tuo libro di cucina preferito.
Hai quattro compiti, tutti legati al tempo impiegato per cucinare la lasagna.
Definisci la funzione expected_minutes_in_oven() che non prende alcun parametro e restituisce per quanti minuti la lasagna deve stare in forno. Secondo il libro di cucina, il tempo di cottura previsto in minuti è 60.
> expected_minutes_in_oven()
[1] 60
Definisci la funzione remaining_time_in_minutes che prende come parametro i minuti effettivi che la lasagna è stata in forno e restituisce per quanti minuti la lasagna deve ancora restare in forno, in base al tempo di cottura previsto in minuti del compito precedente.
> remaining_time_in_minutes(50)
[1] 10
Definisci la funzione prep_time_in_minutes() che prende come parametro il numero di strati che hai aggiunto alla lasagna e restituisce quanti minuti hai impiegato a preparare la lasagna, supponendo che ogni strato richieda 2 minuti di preparazione.
> prep_time_in_minutes(2)
[1] 4
Definisci la funzione elapsed_time_in_minutes che prende due argomenti: il primo argomento è il numero di strati che hai aggiunto alla lasagna, ed il secondo parametro è il numero di minuti che la lasagna è stata in forno. La funzione dovrebbe restituire quanti minuti in totale hai lavorato a cucinare la lasagna: la somma del tempo di preparazione in minuti e del tempo in minuti che la lasagna ha trascorso in forno al momento.
> elapsed_time_in_minutes(3, 20)
[1] 26
Iscriviti a Exercism per imparare e padroneggiare R con 21 concetti111 esercizi e il mentoring di persone reali, tutto gratis.