- Elaborar a função
construir
, que recebe uma lista de funções e um argumento. Ela deve retornar uma lista correspondente a aplicação de cada função da lista de entrada ao argumento. Vejaf <- function (x) x*x g <- function (x) x*x*x h <- function (x) x*x*x*x l <- c(f, g, h); construir(l, 2);
[1] 4 8 16
- Transforme as funções do exercício anterior em funções que recebam
dois argumentos (e não uma lista com dois valores). Reimplemente
então a função construir, nomeando-a
construirdois
de forma a aceitar uma lista de funções e demais argumentos, retornando uma lista correspondente a aplicação de cada função da primeira lista de entrada aos argumentos seguintes. Vejaf <- function (x, y) x*y g <- function (x, y) x*y*2 h <- function (x, y) x*y*3 l <- c(f, g, h); construirdois(c(f,g,h), 2, 4)
[1] 8 16 24
- Elabore uma função
duplica
que receba uma lista e devolva uma lista com os elementos duplicados (multiplicados por 2), usandolapply
e funções anônimas.duplica (c(1,2,3))
[1] 2 4 6
- Elabore uma função cujo nome é
soma
que some os elementos de uma lista usando apenas recursão (sem laços iterativos).soma(c(1,2,3))
[1] 6
- Usando
lapply
e funções anônimas, elabore uma funçãopositivos
que receba uma lista e devolva uma lista indicando se os elementos são positivos (TRUE
) ou negativos (FALSE
).positivos(c(-1, 2, -4))
[1] FALSE TRUE FALSE
- Elabore uma função
norma
que receba uma lista, representando um vetor euclidiano, e calcule a norma quadrática de tal vetor, conforme a definição seguinte:||V|| = \sqrt{x_1^2 + x_2^2 + ... + x_n^2}
ou seja, o somatório do quadrado dos números presentes em tal lista.
norma(c(0.1, 0.2, 0.3, 0.4));
Deve retornar
0.547722557505
. - Elabore uma função
produtoInterno
que receba duas listas, cada uma representando um vetor Euclidiano diferente, e calcule o seu produto interno, conforme a definição seguinte:A.B = \sum_{i=1}^{n}{A_i * B_i}
Note que tal definição leva em conta que os valores do vetor estão normalizados entre 0 e 1. Por exemplo:
produtoInterno(c(0.1, 0.4, 0.9), c(0.2, 0.4, 0.5))
Deve retornar
0.63
. - Elaborar uma função
similaridade
que receba duas listas de números, cada uma representando um vetor de características textuais, e calcule a sua similaridade utilizando a definição seguinte:sim(A,B) = \frac{A.B}{||A||*||B||}
Utilize livremente as funções elaboradas nos exercícios anteriores. Mais informações sobre a função de similaridade podem ser encontradas aqui: