Trilhas
/
R
R
/
Exercícios
/
Observador de pássaros
Observador de pássaros

Observador de pássaros

Exercício de aprendizagem

Introdução

Este é um conceito importante em R. Para ajudar a entender as possibilidades, pode ser útil considerar a dimensionalidade da entrada e da saída das várias funções.

Vetor na entrada, escalar na saída

Já vimos funções que recebem um vetor e retornam um único valor, do tipo escalar:

> v <- 1:5
> length(v)
#> [1] 5
> sum(v)
#> [1] 15

Muitas funções estatísticas também estão nessa categoria, como mean().

Para vetores lógicos, existem all() e any().

Vetor na entrada, vetor na saída

Muitas funções em R operam sobre vetores inteiros, geralmente produzindo uma saída vetorial. Isso inclui a maioria das funções matemáticas:

> sq <- c(4, 9, 16, 25)
> sqrt(sq) # square root
#> [1] 2 3 4 5

Isso não é apenas conciso e conveniente, evitando a necessidade de laços, compreensão de listas ou recursão, que são comuns em outras linguagens. Em R, as funções vetoriais costumam rodar muito mais rápido do que essas técnicas.

Para ordenar um vetor, há sort(), que retorna os valores, e order(), que retorna os índices:

> v <- c("I", "am", "not", "in", "order")
> sort(v)
#> [1] "am"    "I"     "in"    "not"   "order"
> order(v)
#> [1] 2 1 4 3 5

O padrão é ordenar em ordem crescente. Especifique decreasing = TRUE se necessário, ou use rev() para inverter um vetor existente.

v <- c("I", "am", "not", "in", "order")
sort(v, decreasing = TRUE)
#> [1] "order" "not"   "in"    "I"     "am"

rev(1:4)
#> [1] 4 3 2 1

Há também funções que produzem saídas vetoriais cumulativas, operando sobre o vetor de entrada da esquerda para a direita:

> cumsum(1:5)
#> [1]  1  3  6 10 15  # sums
> cumprod(1:5)
#> [1]   1   2   6  24 120 # equivalent to factorials

Vários vetores na entrada, vetor na saída

Uma extensão desse conceito também pode ser usada para comparar vetores. Por exemplo, considere a função pmax(), que calcula o máximo par a par:

> v
#> [1] 2 7 9
> w
#> [1] 3 1 5
> pmax(v, w)
#> [1] 3 7 9 # max of each pairwise comparison

Instruções

Você adora observar pássaros e acompanha quantos visitaram seu jardim nos últimos sete dias.

Você tem seis tarefas, todas lidando com os números de pássaros que visitaram seu jardim.

1. Confira quantos pássaros visitaram hoje

Implemente a função today() para retornar quantos pássaros visitaram seu jardim hoje. As contagens de pássaros estão ordenadas por dia, com o primeiro elemento sendo a contagem do dia mais antigo e o último elemento sendo a contagem de hoje.

birds_per_day <- c(2, 5, 0, 7, 4, 1)
today(birds_per_day)
# => 1

2. Incremente a contagem de hoje

Implemente a função increment_todays_count() para incrementar a contagem de hoje:

birds_per_day <- c(2, 5, 0, 7, 4, 1)
increment_todays_count(birds_per_day)
# => c(2, 5, 0, 7, 4, 2)

3. Verifique se houve um dia sem pássaros visitantes

Implemente a função has_day_without_birds() que retorna TRUE se houve um dia em que zero pássaros visitaram o jardim; caso contrário, retorne FALSE:

birds_per_day <- c(2, 5, 0, 7, 4, 1)
has_day_without_birds(birds_per_day)
# => true

4. Calcule o número de pássaros visitantes nos primeiros dias

Implemente a função count_for_first_days() que retorna o número de pássaros que visitaram seu jardim desde o início da semana, mas limita a contagem ao número especificado de dias a partir do início da semana.

birds_per_day <- c(2, 5, 0, 7, 4, 1)
count_for_first_days(birds_per_day, 4)
# => 14

5. Calcule o número de dias movimentados

Alguns dias são mais movimentados que outros. Um dia movimentado é aquele em que cinco ou mais pássaros visitaram seu jardim. Implemente a função busy_days() para retornar o número de dias movimentados:

birds_per_day <- c(2, 5, 0, 7, 4, 1)
busy_days(birds_per_day)
# => 2

6. Calcule o total acumulado de visitas de pássaros na última semana

Você quer saber quantos pássaros no total visitaram até agora nesta semana. Calcule os totais acumulados para cada dia.

running_total(c(7, 6, 5, 4, 3, 2, 1))
#> [1]  7 13 18 22 25 27 28

7. Ordene os nomes dos dias de acordo com o movimento

Você suspeita que as visitas dos pássaros são afetadas por padrões do trânsito nas proximidades, sendo diferentes nos fins de semana e nos dias úteis.

Ordene as abreviações dos dias em ordem decrescente de quantos pássaros visitaram.

day_names <- c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
birds_per_day <- c(5, 2, 4, 6, 0, 9, 8)
busy_days_of_week(birds_per_day, day_names)
#> [1] "Sat" "Sun" "Thu" "Mon" "Wed" "Tue" "Fri"
Editar via GitHub O link abre em uma nova janela ou aba
R Exercism

Tudo pronto para começar Observador de pássaros?

Crie sua conta no Exercism para aprender e dominar R com 21 conceitos111 exercícios e mentoria humana de verdade, tudo de graça.