Não foi possível enviar o arquivo. Será algum problema com as permissões?
Miscelânia de tópicos

Miscelânia de tópicos

Ordenação

x <- rpois(10, lam=10)
x
sort(x)
order(x)
x[order(x)]
x[rev(order(x))]
args(order)
order(x, decreasing=T)

Representação e Manipulação de datas

## transformando caracteres em datas
dt1 <- as.Date("4/02/2011 03:24:13", "%d/%m/%Y %H:%M:%S")
dt1
## exibindo a data de otras formas
format(dt1, "%j")    # dia do ano
format(dt1, "%A")    # dia da semana
format(dt1, "%c")    # referencia completa (de acordo com o locale do sistema)
format(dt1, "%m")    # número do mes
 
## opcoes disponíveis para exibição:
# a A b B c d H I j m M p S U w W x X y Y z Z
 
Sys.time()
format(as.Date(Sys.time(), "%d/%m/%Y %H:%M:%S"), "%j")
 
## as datas podem ser fornecidas de outras maneiras...
x <- c("25set1967", "28set1969", "30jan2003", "05jul2004")
z <- strptime(x, "%d%b%Y")
z
 
##
## Ver detalhes aqui!!! 
##
## e note a confusão com a omisão do século !!!
x <- c("1jan90", "2jan90", "31mar90", "30jul90")
z <- strptime(x, "%d%b%y")
z
x <- c("25set67", "28set69", "30jan03", "05jul04")
z <- strptime(x, "%d%b%y")
z
 
## concatenando datas e horarios para formar registros únicos
dates <- c("02/27/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92")
times <- c("23:03:20", "22:29:56", "01:03:30", "18:21:03", "16:56:26")
x <- paste(dates, times)
strptime(x, "%m/%d/%y %H:%M:%S")
 
dt2 <- strptime(x, "%m/%d/%y %H:%M:%S")
format(dt2, "%c")
 
dt2 <- sort(dt2)
dt2
 
diff(dt2)
 
## frações de segundos
z <- strptime("20/2/06 11:16:16.683", "%d/%m/%y %H:%M:%OS")
z 
op <- options(digits.secs=3)
z

Precisão numérica/ponto flutuante

Encontrando dados replicados, e não replicados

x <- rpois(25, lam=5)
x
unique(x)
 
duplicated(x)
x[!duplicated(x)]
x[duplicated(x)]

Representação de números e ponto flutuante.
isTRUE deve se usado para testar condições dentro de funções.

.1 == .3/3
all.equal(.1, .3/3)
isTRUE(all.equal(0.1, .3/3))
identical(.1, .3/3)

Mais coisas que deveriam ser iguais… mas não exatamente são …

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)

Um exemplo com uma função para resolver equação do 2o grau:

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)

Objetos crescentes, substituição der valores e criação direta de vetores

Os tempos de execução podem ser substancialmetne diferentes!!

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
})

Onderm de operações

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))


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