R é uma linguagem de tipagem dinâmica, por isso, em geral, não é necessário especificar o tipo de uma variável. O operador de atribuição preferido é <-
x <- 42
avogadro <- 6.02e23
mystr <- "Hello, World!"
Usar = em vez de <- funciona muitas vezes, mas nem sempre, e é desaconselhado por ser um mau estilo.
Se estiveres a trabalhar no RStudio, podes inseri-lo com o atalho de teclado Alt-minus.
Os operadores são, na sua maioria, convencionais, mas repara em %/% 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)
Em R, # inicia um comentário de uma linha.
Não existe uma sintaxe separada para comentários de várias linhas.
Para definir uma função:
squareit <- function(x) {
x * x
}
As funções podem ter zero ou mais argumentos, separados por vírgulas.
Os parênteses () são necessários com function(), mesmo que não haja parâmetros.
Podem especificar-se valores predefinidos para os argumentos de uma função, embora tenham de vir depois de todos os argumentos sem valor predefinido, e usa = e não <- para atribuir o valor predefinido.
Como exemplo bastante inútil:
squareit <- function(x = 42) {
x * x
}
squareit()
#> [1] 1764
As chavetas { } não são estritamente necessárias para corpos de função com uma única linha, mas incluí-las é considerado um bom estilo.
O R devolve automaticamente o valor final de uma função, como nos exemplos acima.
return() pode ser usado em qualquer parte do corpo da função para tornar um valor devolvido explícito.
Chamar uma função funciona da mesma forma que em muitas outras linguagens:
squareit(3)
#> [1] 9
Neste exercício vais escrever algum código para te ajudar a cozinhar uma lasanha fabulosa a partir do teu livro de culinária preferido.
Tens quatro tarefas, todas relacionadas com o tempo gasto a cozinhar a lasanha.
Define a função expected_minutes_in_oven(), que não recebe parâmetros e devolve quantos minutos a lasanha deve estar no forno. Segundo o livro de culinária, o tempo esperado no forno é de 60 minutos.
> expected_minutes_in_oven()
[1] 60
Define a função remaining_time_in_minutes, que recebe como parâmetro os minutos que a lasanha já esteve no forno e devolve quantos minutos a lasanha ainda tem de ficar no forno, com base no tempo esperado no forno da tarefa anterior.
> remaining_time_in_minutes(50)
[1] 10
Define a função prep_time_in_minutes(), que recebe como parâmetro o número de camadas que adicionaste à lasanha e devolve quantos minutos passaste a preparar a lasanha, assumindo que cada camada demora 2 minutos a preparar.
> prep_time_in_minutes(2)
[1] 4
Define a função elapsed_time_in_minutes, que recebe dois argumentos: o primeiro argumento é o número de camadas que adicionaste à lasanha e o segundo parâmetro é o número de minutos que a lasanha já esteve no forno. A função deve devolver quantos minutos, no total, dedicaste a cozinhar a lasanha, ou seja, a soma do tempo de preparação, em minutos, com o tempo, em minutos, que a lasanha esteve no forno até ao momento.
> elapsed_time_in_minutes(3, 20)
[1] 26
Inscreve-te no Exercism para aprenderes e dominares R com 21 conceitos111 exercícios, e mentoria humana real, tudo grátis.