Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
cursos:mct:exemplo5 [2011/05/09 10:59] paulojus |
cursos:mct:exemplo5 [2011/05/27 19:00] (atual) paulojus |
||
---|---|---|---|
Linha 1: | Linha 1: | ||
====== Miscelânia de tópicos ====== | ====== Miscelânia de tópicos ====== | ||
+ | |||
+ | <fs medium>Ordenação</fs> | ||
+ | <code R> | ||
+ | x <- rpois(10, lam=10) | ||
+ | x | ||
+ | sort(x) | ||
+ | order(x) | ||
+ | x[order(x)] | ||
+ | x[rev(order(x))] | ||
+ | args(order) | ||
+ | order(x, decreasing=T) | ||
+ | </code> | ||
+ | |||
<fs medium>Representação e Manipulação de datas</fs> | <fs medium>Representação e Manipulação de datas</fs> | ||
Linha 55: | Linha 68: | ||
</code> | </code> | ||
+ | <fs medium>Precisão numérica/ponto flutuante</fs> | ||
+ | |||
+ | Encontrando dados replicados, e não replicados | ||
+ | <code R> | ||
+ | x <- rpois(25, lam=5) | ||
+ | x | ||
+ | unique(x) | ||
+ | |||
+ | duplicated(x) | ||
+ | x[!duplicated(x)] | ||
+ | x[duplicated(x)] | ||
+ | </code> | ||
+ | |||
+ | Representação de números e ponto flutuante.\\ | ||
+ | ''isTRUE'' deve se usado para testar condições dentro de funções. | ||
+ | <code R> | ||
+ | .1 == .3/3 | ||
+ | all.equal(.1, .3/3) | ||
+ | isTRUE(all.equal(0.1, .3/3)) | ||
+ | identical(.1, .3/3) | ||
+ | </code> | ||
+ | |||
+ | Mais coisas que deveriam ser iguais... mas não exatamente são ... | ||
+ | <code R> | ||
+ | seq(0, 1, by=0.1) == 0.3 | ||
+ | |||
+ | x <- c(.3, 0.4 - 0.1, 0.5 - 0.2, 0.6 - 0.3, 0.7 - 0.4) | ||
+ | x | ||
+ | unique(x) | ||
+ | </code> | ||
+ | |||
+ | Um exemplo com uma função para resolver equação do 2o grau: | ||
+ | <code R> | ||
+ | eq2g <- function(a, b, c){ | ||
+ | delta <- b^2 - 4 * a * c | ||
+ | if(is.complex(delta) || all(delta > 0)) | ||
+ | delta <- sqrt(delta) | ||
+ | else | ||
+ | delta <- sqrt(as.complex(delta)) | ||
+ | return(cbind(-b + c(-1,1) * delta)/(2*a)) | ||
+ | } | ||
+ | |||
+ | print(eq2g(1, -5, 6), dig=16) | ||
+ | |||
+ | eq2g(1, c(-5, 1), 6) | ||
+ | |||
+ | eq2g(1, -5, 6) - c(2, 3) | ||
+ | |||
+ | eq2g(1/3, -5/3, 6/3) | ||
+ | |||
+ | print(eq2g(1/3, -5/3, 6/3), dig=16) | ||
+ | |||
+ | eq2g(1/3, -5/3, 6/3) - c(2, 3) | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <fs medium>Objetos crescentes, substituição der valores e criação direta de vetores</fs> | ||
+ | |||
+ | Os tempos de execução podem ser substancialmetne diferentes!! | ||
+ | <code R> | ||
+ | n<- 50000 | ||
+ | |||
+ | system.time({ | ||
+ | vec <- numeric(0) | ||
+ | for(i in 1:n) vec <- c(vec, i) | ||
+ | }) | ||
+ | |||
+ | system.time({ | ||
+ | vec <- numeric(n) | ||
+ | for(i in 1:n) vec[i] <- i | ||
+ | }) | ||
+ | |||
+ | system.time({ | ||
+ | vec <- 1:n | ||
+ | }) | ||
+ | </code> | ||
+ | |||
+ | Onderm de operações | ||
+ | <code R> | ||
+ | x <- rnorm(10000, m=100, sd=10) | ||
+ | |||
+ | system.time({ | ||
+ | lsum <- 0 | ||
+ | for(i in 1:length(x)){ | ||
+ | lsum <- lsum + log(x[i]) | ||
+ | } | ||
+ | }) | ||
+ | |||
+ | system.time(lsum <- sum(log(x))) | ||
+ | |||
+ | c(log(12.3), log(16.7), log(18.3)) | ||
+ | log(c(12.3, 16.7, 18.3)) | ||
+ | </code> |