Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
cursos:mct:exemplo5 [2011/05/09 10:59] paulojuscursos: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>

QR Code
QR Code cursos:mct:exemplo5 (generated for current page)