Academia.eduAcademia.edu

R - lista de funções

LISTA DE FUNÇÕES V0.10­200904280229 ΔD (mm) 20 10 0 -10 60 50 D (mm) 40 30 20 10 0 0 1 2 3 4 t (years) JOÃO GONÇALVES, 2009 Porto 5 6 7 ÍNDICE FUNÇÕES DE AJUDA ............................................................................................................................................................................... FUNÇÕES MATEMÁT)CAS, LÓG)CAS E ESTATÍST)CAS BÁS)CAS......................................................................................................... ESTRUTURAS DE DADOS ....................................................................................................................................................................... SEQUÊNC)AS ........................................................................................................................................................................................... )NDEXAÇÃO E MAN)PULAÇÃO DE OBJECTOS ...................................................................................................................................... ÁLGEBRA MATR)C)AL ............................................................................................................................................................................ LE)TURA E ESCR)TA DE DADOS ............................................................................................................................................................ MAN)PULAÇÃO DE TEXTO ................................................................................................................................................................. MAN)PULAÇÃO DE DATAS ................................................................................................................................................................. C)CLOS E EXPRESSÕES COND)C)ONA)S ............................................................................................................................................. DEBUGG)NG E CONTROLO DE ERROS ............................................................................................................................................... GRÁF)COS ............................................................................................................................................................................................. M)SCELÂNEA ....................................................................................................................................................................................... VAR)ÁVE)S PREDEF)N)DAS E )NFORMAÇÕES DO S)STEMA ............................................................................................................ ANÁL)SE ESTATÍST)CA ....................................................................................................................................................................... BOAS PRÁT)CAS DE PROGRAMAÇÃO................................................................................................................................................. 2 R ‐ Lista de funções FUNÇÕES DE AJUDA help(topic), ?topic help.start(topic, package) Permite aceder à documentação de ajuda da função ou tópico introduzido. Para procurar informação sobre operadores ou palavras como if ou outros operadores deve usar‐se: ?’if’, ?’<­’. )nicia a versão offline da documentação do R para a versão corrente. help.search(pattern, Permite pesquisar no sistema de ajuda, documentação correspondente ao termo de busca ou à fields), ??pattern, expressão regular introduzida pattern . field??pattern RSiteSearch(string) example() Procura na mailing‐list de ajuda, nos manuais ou páginas de apoio do R por uma ou mais palavras‐ chave ou expressões introduzidas no argumento string, usando para este efeito o motor de busca em http://search.r‐project.org. A visualização de resultados é feita no browser predefinido. Diversas opções de busca podem ser definidas para refinar a pesquisa. Executa todos os exemplos relevantes para o comando ou função que fazem parte da documentação do sistema. FUNÇÕES MATEMÁTICAS, LÓGICAS E ESTATÍSTICAS BÁSICAS <­ assign(x, value) get(x) Operador de atribuição. Permite atribuir um valor ao nome de uma variável. Atribui um determinado valor value ao nome de uma variável x num dado ambiente. O comportamento desta função é idêntico ao operador de atribuição. Procura e devolve o valor de um objecto com o nome definido. Exemplos: assign("var",1E-6) print(var) # [1] 1e-06 get("var")+log(12.25) # [1] 2.505527 +, ­, *, / >, <, >=, <=, == any(…) all(…) &, &&, |, ||, !=, ! %/%, ^, %%, sqrt(), log(x, base), log10(), exp(), abs() cos(), sin(), tan(), acos() asin(), atan() Operações matemáticas: soma, subtracção, multiplicação e divisão numérica. Operadores de comparação: maior, menor, maior ou igual, menor ou igual, igual não idêntico . Dado um vector contendo elementos lógicos existe algum com valor verdadeiro TRUE ? Dado um vector contendo elementos lógicos todos eles possuem valor verdadeiro? Operadores lógicos de comparação: E vectorizável/não vectorizável , OU vectorizável/não vectorizável , NÃO )GUAL, NÃO. Operadores matemáticos: divisão inteira, potência, módulo, raiz quadrada, logaritmo natural por defeito , logaritmo de base , e^x, valor absoluto. Funções trigonométricas: co‐seno, seno, tangente, arco‐coseno, arco‐seno, arco‐tangente Funções de arredondamento numérico: maior inteiro, menor inteiro, truncagem/remoção da floor(), ceiling(), trunc(), fracção decimal, arredondamento para o número de casas decimais definido, arredondamento round(), signif() para o número de algarismos significativos definido. min(), max() pmin(),pmax() range(x) rank(x) sum(x) diff(x) prod(x) cummin(x), cummax(x) cumsum(x) cumprod(x) 3 Devolve o mínimo/máximo dos argumentos introduzidos. Devolve o mínimo/máximo paralelo dos argumentos introduzidos. Devolve a amplitude de x. Devolve a posição/rank relativo de cada elemento. Devolve a soma de todos os elementos. Calcula a diferença espaçada e iterada entre os elementos do vector. Calcula o produto de todos os elementos em argumento Calcula o mínimo/máximo cumulativo. Calcula o somatório cumulativo. Calcula o produto cumulativo. R ‐ Lista de funções mean(x) weighted.mean(x, w) median(x) quantile(x, probs) sd(x) var(x) cov(x) cor(x, y, method) cor.test(x, y, alternative, method, conf.level) / cor.test(formula, data, subset) Calcula a média de x. Calcula a média ponderada de x pelos pesos definidos no argumento w. Calcula a mediana de x. Calcula os quantis que correspondem às probabilidades probs definidas c 0, 0.25, 0.50, 0.75, 1) por defeito Calcula o desvio‐padrão de x, caso o argumento seja um data frame devolve o desvio‐padrão por coluna. Calcula a matriz variância de x. Calcula a matriz de co‐variância. Calcula a matriz de correlação se x é um data frame ou matriz ou a correlação entre x e y se y é não nulo . O argumento method permite definir qual o coeficiente de correlação a ser calculado. As opções disponíveis são: c(“pearson”,“kendall”,“spearman”). Por defeito é usado o coeficiente de correlação de Pearson. Testa a associação/correlação entre duas variáveis aleatórias, permitindo seleccionar qual o qual a hipótese alternativa alternative=c("two.sided", "less", "greater") , o indicador/coeficiente method=c("pearson", "kendall", "spearman") e o nível de confiança do teste conf.level=0.95; por defeito . Exemplo: data(iris) # Calcula a matriz de correlação com os coeficientes de Pearson cor(iris[,1:4]) ESTRUTURAS DE DADOS vector(mode, length) matrix(data, nrow, ncol, byrow, dimnames) array(data, dim, dimnames) data.frame (..., row.names, check.rows, check.names, stringsAsFactors list() 4 Cria um vector com o modo e o comprimento especificado. Os modos disponíveis são: "logical", "integer", "numeric", "complex", "character" e "raw". v<-vector(mode="integer", length=10) v<-1:10 # [1] 1 2 3 4 5 6 7 8 9 10 Cria uma matriz a partir de um conjunto de valores. Qualquer matriz só pode conter apenas um tipo de valores, qualquer tentativa de armazenar mais do que um tipo despoleta uma coerção de tipos. Esta função permite definir o conjunto de dados a usar data , o n.º de linhas nrow e colunas ncol e os nomes das linhas e colunas através de uma lista dimnames . Exemplos: # Cria uma matriz identidade 3×3 x<-matrix(c(1,0,0,0,1,0,0,0,1),nrow=3) # Cria uma matriz com 2 linhas preenchendo-a por linha vector<-c(1,2,3,4,4,3,2,1) v<-matrix(vector,byrow=TRUE,nrow=2) Cria um array. Os dados especificados no argumento data são reciclados. Exemplo: # Cria um array bidimensional 10×10 preenchido por zeros array(0,c(10,10)) # Cria um array 4×2×3 preenchido por letras x<-letters[1:24] dim(x)<-c(4,2,3) # Define as dimensões do array Função usada para criar data frames a partir de uma colecção de variáveis com propriedades similares. Um data frame é bastante similar a uma matriz, contudo permite armazenar dados de diferentes tipos e as colunas possuem sempre um nome associado. Os elementos com menor dimensão são reciclados. Exemplo: sample.df<-data.frame(1:10,runif(20),runif(20)) sample.df # O primeiro elemento é reciclado uma vez sample.df<-data.frame(compr=1:10,idade=gl(2,5,labels=c("pupa","juvenil"))) sample.df # Note-se os diferentes tipos utilizados: V1 - inteiros e V2 - factores Produz uma lista a partir de um conjunto de argumentos com ou sem nome. Exemplo: lista<-list(a=c(1,2),b="hi",c=3i) # Output: # $a # [1] 1 2 # $b R ‐ Lista de funções # [1] "hi" # $c # [1] 0+3i factor() ls() apropos(what) describe() str() summary() attach() detach() Usa‐se para converter um vector para factores/categorias/classes. A função levels() permite visualizar os níveis existentes. Devolve um vector de texto com os nomes de todos os objectos num ambiente definido. Quando a função é invocada sem argumentos a partir da linha de comandos mostra quais os datasets e funções criadas pelo utilizador. Quando chamada dentro de uma função, sem argumentos, mostra os nomes das variáveis locais definidas no escopo dessa função. Devolve um vector de texto com o nome de todos os objectos na lista de busca introduzida termos ou expressões regulares no argumento what Método genérico que devolve um conjunto de informações acerca do tipo de dados contido na variável e um sumário estatístico descritivo. Mostra a estrutura interna e diagnóstico do objecto especificado. A variante ls.str() mostra todos os objectos no search path e lista a sua estrutura. Função genérica que mostra resultados sumários de diferentes tipos/classes de objectos dependendo da função usada. A base de dados considerada é associada ao caminho de trabalho do R, significando que esta é pesquisada quando uma variável é avaliada. )sto significa que os objectos podem ser acedidos usando simplesmente os seus nomes. A função detach() remove o vínculo à base de dados. Exemplos: sample.data<-data.frame(1:10,runif(10),runif(10)) colnames(sample.data)<-Cs(variavel_01,variavel_02,variavel_03) attach(sample.data) print(variavel_01) # Posso usar directamente as colunas/variáveis do data frame sample.data detach(sample.data) # Remove o vínculo do data frame sample.data detach(package:lattice) # Remove o pacote lattice da sessão methods() Permite ver ou atribuir a classe de um determinado objecto. Devolve uma cópia do objecto em argumento sem o atributo de classe. attr(x,which) Permite ver ou especificar um atributo which de um dado objecto x . Exemplo: class() unclass() attributes() rm()/ remove() Lista todos os métodos disponíveis para uma função genérica do tipo S ou alternativamente, todos os métodos de uma certa classe. data(iris) # Especifica o atributo ncols.data como o número de colunas do data frame attr(iris, "ncols.data") <- ncol(iris) Permite ver ou estabelecer a lista de atributos de um dado objecto. Remove os objectos especificados de um certo ambiente. Exemplo: rm(list=ls(all=TRUE)) # Remove todos os objectos da sessão dim() length() nrow()/NROW() ncol()/NCOL() names() dimnames() rownames() colnames() Devolve ou especifica as dimensões de um objecto. Devolve ou atribui as dimensões a um vector, lista ou factores. Número de linhas Número de colunas Exibe ou especifica os nomes de um objecto geralmente do tipo vector . Lista ou especifica os nomes de um determinado objecto. Lista ou atribui os nomes dos casos/linhas a um determinado objecto. Lista ou atribui os nomes das colunas/variáveis de um objecto. Combina/concatena os valores para gerar um vector ou lista com um tipo comum. c() expand.grid() 5 Cria um data frame com todas as combinações possíveis dos vectores/factores introduzidos. Exemplo: expand.grid(cor=as.factor(c("Verde", "Amarelo")), dim=10:15) # Output cor dim 1 Verde 10 2 Amarelo 10 R ‐ Lista de funções 3 4 … rbind(), cbind() sample(x, size, replace, prob) Verde Amarelo 11 11 A partir de uma sequência de vectores, matrizes ou data frames combina‐os/junta‐os por linha ou coluna respectivamente. Estes métodos são genéricos para outras classes. Permite extrair uma amostra de x com o tamanho especificado no argumento size com ou sem substituição argumento replace . Esta função mistura de forma sequencial e aleatória o conteúdo do vector x mantendo os valores inalterados. A ordem dos elementos é diferente de cada vez que a função sample é chamada, embora os mesmos elementos sejam aleatorizados em cada caso. O argumento replace permite definir se a amostragem tem TRUE ou não FALSE substituição, sendo que esta última constitui a base para realizar bootstrap. O argumento prob permite definir a probabilidade de cada elemento do vector de entrada ser amostrado. Exemplos: # Amostragem sem substituição de 10 elementos de x x<-1:100 sample(x, 10, replace=FALSE) # [1] 82 66 73 23 9 59 3 63 38 1 # Amostragem com substituição de 10 elementos de x sample(x, 10, replace=TRUE) # [1] 97 70 91 68 85 31 34 31 21 33 x.prob<-runif(100) sample(x, 10, replace=FALSE, prob=x.prob) scale(x, center, scale) Esta função genérica permite estandardizar e/ou centrar as colunas de uma matriz numérica, fazendo com que a média de cada coluna seja igual a e o desvio‐padrão igual a . SEQUÊNCIAS Cria sequências regulares. Para sequências numéricas este operador equivale a gerar uma sequência do tipo: seq(from,to) com incremento de ou ‐ . Permite gerar sequências por cruzamento de factores para factores a, b com a mesma dimensão . Exemplos: from:to a:b Com números from, to x<-1:10 # Output: [1] 1 2 3 4 5 6 7 8 9 10 x<-10:-10 # Output: [1] 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 x<-pi:10 # Output: 3.141593 4.141593 5.141593 6.141593 7.141593 8.141593 9.141593 # Com factores a, b x<-gl(2,3) y<-gl(3,2) z<-x:y # Output: # [1] 1:1 1:1 1:2 2:2 2:3 2:3 # Levels: 1:1 1:2 1:3 2:1 2:2 2:3 rep(x, times, each) Permite replicar x, times vezes, sendo que cada elemento de x pode ser replicado each vezes. Os valores são reciclados. Exemplos: seq(from, to, by) Gera uma sequência regular de from até to por incrementos do argumento definido por by. gl(n, k, length, labels) 6 rep(x=c(1,2,3),times=2) # Output: [1] 1 2 3 1 2 3 rep(x=c(1,2,3),times=2,each=3) # Output: [1] 1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3 seq(from = 1, to = 5, length = 4) # [1] 1.000000 2.333333 3.666667 5.000000 seq(length = 10, from = -2, by = 0.2) # [1] -2.0 -1.8 -1.6 -1.4 -1.2 -1.0 ... -0.2 Produz factores por combinação dos níveis definidos. O argumento n controla o número inteiro de níveis e k o n.º de réplicas. Por defeito são gerados n*k factores podendo este número ser definido pelo argumento length. O argumento labels permite incluir os códigos/legendas de cada nível. # Produz duas réplicas de cada um dos níveis 1, 2 e 3 x.f <- gl(3,2) R ‐ Lista de funções # Output: # [1] 1 1 2 2 3 3 # Levels: 1 2 3 # Produz três réplicas de cada um dos níveis, codificados por: Pupa, Juvenil, Adulto x.f <- gl(3,3,labels=c("Pupa","Juvenil","Adulto")) # Output: # [1] Pupa Pupa Pupa Juvenil Juvenil Juvenil Adulto Adulto Adulto # Levels: Pupa Juvenil Adulto INDEXAÇÃO E MANIPULAÇÃO DE OBJECTOS Indexação de vectores x[n] x[­n] x[1:n] x[­(1:n)] x[c(1,4,2)] x["id"] x[x > 3] x[x > 3 & x < 5] x[x %in% c("quercus", "acer","laurus")] Extrai/selecciona o n‐ésimo elemento do vector x. Selecciona todos os elementos excepto o n‐ésimo. Selecciona os primeiros n elementos. Selecciona todos os elementos de n+ até ao fim. Extrai os elementos especificados, neste caso: , e . Extrai o elemento id através do nome. Selecciona todos os elementos de x cujo valor é superior a . Selecciona todos os elementos de x cujo valor é superior a e inferior a . Selecciona todos os elementos de x com correspondência ao conjunto definido. Indexação de matrizes x[i, j ] x[i, ] x[, j] x[, 1:5] x[, c(1,2,10)] x[,­1] x[, c(“Var1”, “Var2”)] x[n,1,drop=”False”] x[1,n,drop=”False”] Indexação de data frames x[["Var1"]] x$Var1 Indexação de listas x[n] x[["Var1"]] x$Var1 which() Selecciona a i‐ésima linha e a j‐ésima coluna de x. Selecciona a linha i. Selecciona a coluna j. Selecciona as colunas a . Selecciona as colunas , e . Selecciona todas as colunas excepto a ª. Selecciona as colunas/variáveis Var e Var . Quando a selecção de um objecto tipo matriz ou data frame tem alguma dimensão igual a , o argumento drop=”FALSE” permite manter o formato de matriz em vez de ser automaticamente convertida para vector para n> , n.º de colunas ou linhas . Nota: aplicam‐se todas as regras de indexação ligadas às matrizes mais as seguintes Selecciona a coluna/variável Var . Selecciona a variável Var do data frame. Extrai o elemento n da lista. Selecciona a coluna/variável Var . Selecciona a variável Var do data frame. Devolve os índices dos elementos que verificam a condição introduzida, permitindo índices do tipo array. Exemplo: data(iris) iris[which(iris$Sepal.Width>4),] # Devolve os elementos com sépalas > 4 which.max() which.min() subset() cut() cut.Date() split() 7 Devolve o índice/localização do máximo/mínimo de um vector numérico. Devolve um subconjunto de um vector, matriz ou data frame que correspondem a uma dada condição similar ao uso de SELECT e W(ERE em SQL . Divide o vector introduzido em intervalos e codifica os valores dentro do intervalo a que estes pertencem. A versão cut.Date() permite fazer intervalos de dados em formato de data. A partir do vector introduzido permite criar uma lista com grupos definidos pelo parâmetro f. Permite criar grupos equitativos através da reciclagem do parâmetro f desde que este seja um R ‐ Lista de funções múltiplo do comprimento do vector de entrada. Permite fazer uma tabela pivot/contingência com contagens de cada combinação de factores. Para este tipo de tarefas a função tabulate() também pode ser empregue. table(), tabulate() ftable() s <- Cs(f,f,m,m,m,m,m,m,m,f,f,f,m,m,m,f,f, m,m,f) s <- as.factor(s) i <- gl(2,10,labels=c("[35-45[", "[45-60[")) # Tabulação cruzada com contagem tab.c <- table(s,i) # i # s [35-45[ [45-60[ # f 3 5 # m 7 5 Cria tabelas pivot/contingência planas com maior flexibilidade. Permite definir variáveis de coluna e linha para construir as tabulações. Possibilita a conversão para data frame. Gera uma tabela em que cada entrada da matriz é uma fracção da tabela marginal margin=1, por linha; margin=2, por coluna s <- Cs(f,f,m,m,m,m,m,m,m,f,f,f,m,m,m,f,f, m,m,f) s <- as.factor(s) i <- gl(2,10,labels=c("[35-45[", "[45-60[")) prop.table(x, margin) order() # Tabulação com frequências totais tab.c <- table(s,i) prop.table(tab.c) # i # s [35-45[ [45-60[ # f 0.15 0.25 # m 0.35 0.25 Devolve uma permutação do índice dos elementos ordenando‐os segundo o parâmetro decreasing. Através desta função é possível ordenar segundo vários elementos simultaneamente. Para ordenar um data frame ou matriz pode usar‐se o seguinte exemplo: data(iris) iris[order(iris$Sepal.Length, decreasing=TRUE), ] rev() unique() apply() lapply(), sapply() by(data, INDICES, FUN) merge() aggregate(x, by, FUN) stack(x, select), unstack(x, form) union(), intersect(), setdiff(), setequal(), is.element() 8 )nverte a ordem do argumento. Devolve um vector, array ou data frame com os valores duplicados removidos. Aplica a função definida pelo utilizador às margens de um objecto tipo matriz. O parâmetro MARGIN define 1 para linhas e 2 para colunas e c(1,2) para ambos. lapply() aplica a função definida aos elementos de uma lista X devolvendo uma lista com as mesmas dimensões. A função sapply() é uma versão mais user‐friendly devolvendo uma matriz ou vector com os resultados da função aplicada. Aplica uma função a uma base de dados data por grupos definidos pelo argumento INDICES. Permite jazer junções de data frames através de nomes de linhas, colunas ou campos comuns. Existem diversas possibilidades de determinar o tipo de join com semelhanças aos SGBDs. Divide os dados em subconjuntos, definidos pelo argumento by lista com a mesma dimensão das variáveis em x , calcula um sumário estatístico para cada um e devolve o resultado num formato conveniente. O funcionamento é similar a GROUP BY em SQL. Exemplo: data(iris) aggregate(x=iris[,1:4],by=list(Espécie=iris$Species),FUN=mean) # Calcula a média de cada atributo para cada espécie de iris (setosa,versicolor e virginica) Empilha múltiplos vectores de um data frame ou lista para uma única coluna acompanhada por um factor que indica a proveniência do valor. Usando unstack anula/inverte esta operação. Realiza operações de conjuntos sobre dois vectores. As operações correspondem à união, intersecção, diferença, igualdade e pertença. Exemplos: x<-1:10 y<-10:19 R ‐ Lista de funções union(x,y) # [1] 1 2 3 4 5 6 intersect(x,y) # [1] 10 setdiff(x,y) # [1] 1 2 3 4 5 6 7 8 9 7 8 9 10 11 12 13 14 15 16 17 18 19 Remove os valores em falta, attr(x,“na.action”) permite ver o índice dos casos removidos. Devolve uma mensagem de erro caso exista algum valor em falta. )ntroduz NA nos valores em falta. na.omit() na.fail() na.exclude() ÁLGEBRA MATRICIAL diag() Gera uma matriz diagonal ou substitui a diagonal de uma matriz. Exemplos: x<-matrix(1:100,10,10) diag(x) # Mostra a diagonal da matriz x # Output: # [1] 1 12 23 34 45 56 67 78 89 100 diag(x)<-rnorm(10) # Substitui a diagonal da matriz x Transpõe a matriz, data frame ou vector. t() solve() eigen() rowSums(), colSums() rowMeans(), colMeans() Esta função permite resolver um sistema de equações a %*% = b, onde b pode ser um vector ou uma matriz. Exemplo: coefs<-matrix(c(-4,0.3,54.3,-4),2,2,byrow=TRUE) consts<-c(12.3,45) solve(coefs,consts) # Output: # [1] 216.2069 2923.7586 Calcula os auto‐valores e os auto‐vectores de uma dada matriz. Calcula somatórios de linha ou coluna respectivamente. Calcula médias por linha ou coluna respectivamente. LEITURA E ESCRITA DE DADOS source(file) data() load(file) read.table(file, header, sep, row.names, col.names), read.csv(), read.delim() data.entry(), dataentry() scan(file, what, nmax, n, sep, quote, dec, skip, nlines) sink(file) )nterpreta e avalia o código do ficheiro, URL ou ligação file no ambiente seleccionado. Permite ler ou listar datasets que fazem parte integrante do R ou de determinados pacotes. Relê dados/objectos previamente salvos através da função save() definidos por file no formato binário do R. Lê o ficheiro e cria um data frame a partir deste. Os casos correspondem a linhas e as variáveis aos campos presentes no ficheiro. Permite indicar qual o separador de valores sep , e a presença de cabeçalho header , nomes dos casos row.names e das variáveis col.names . A função read.csv(), read.delim() tem valores por defeito ajustados para ler ficheiros ou ligações em formato csv separados por vírgula “,” ou txt separados por tabulações “\t” . Exibe uma interface do tipo folha de cálculo para a entrada e edição de dados. Lê e insere dados a partir de um ficheiro ou da consola. Tem maior flexibilidade, rapidez e consome menos recursos. Envia o output bruto da consola para um ficheiro/ligação. Exemplo: data(iris) 9 R ‐ Lista de funções sink(file=”C:\\temp\\output.txt”) print(summary(iris)) sink() # termina o envio para o ficheiro save() Concatena e imprime os objectos. Realiza menos conversões de tipo do que a função print() e útil para usar em funções definidas pelo utilizar. O output não é escapado, ou seja, é feita a interpretação deste. Permite imprimir para ficheiro/ligação a menos que sink() esteja activo. write.table(x,file, header, sep, row.names, col.names), write.csv() Grava o objecto x para um ficheiro ou ligação após a sua conversão para data frame. A variante write.csv() grava ficheiros de dados separados por vírgulas. cat(…, file) Grava uma representação externa de um objecto R no ficheiro definido. save.image() permite salvar o workspace/todos os objectos da sessão. MANIPULAÇÃO DE TEXTO Cs() paste() substring(), substr() strsplit() Converte e concatena um conjunto de nomes sem aspas para um vector de texto. Concatena os valores após convertê‐los para texto. Permite definir um separador de concatenação pelo parâmetro sep e colapsar todos os elementos para um elemento único através do parâmetro collapse="string". Extrai ou substitui substrings no vector de texto. Exemplo: # Extrai substring substring("Hello World!", 1, 5) # Hello Divide os elementos de um vector de texto em substrings de acordo com uma string de separação definida pelo parâmetro split. Procura no vector x correspondências com o padrão definido pattern e devolve o índice destas. Exemplos: grep(pattern, x) gsub(pattern, replacement, x) match() %in% pmatch(), charmatch() print() sprintf() tolower(), toupper() abbreviate() 10 # Encontra todas as strings com nome exactamente igual a “verde” x<-Cs(amarelo,azul,preto,azul,verde,laranja,verde) grep("verde",x) # Devolve todos os nomes de ficheiros com extensão .asc (ASCII) x<-c("file00.asc","file01.txt","file02.txt","file03.asc") grep("\\.asc",x) Executa uma substituição, definida por replacement, quando é encontrada correspondência com o padrão definido pattern . Devolve as posições/índices do segundo vector onde são encontradas correspondências com o primeiro vector. Operador binário de comparação mais intuitivo do que a função match(). Procura correspondências parciais no segundo vector a partir do primeiro. Devolve os índices/posições no segundo vector. Função genérica que imprime o argumento da função. O output é escapado, o número de algarismos significativos digits e o quote de strings é opcional. )mprime texto com um formato definido pelo utilizador. Bastante flexível para imprimir texto e dados numéricos juntamente. Converte uma string para minúsculas e maiúsculas respectivamente. Abrevia uma determinada string para um conjunto mínimo de caracteres definidos por minlength para que estes permaneçam únicos. Permite várias opções de formato. R ‐ Lista de funções MANIPULAÇÃO DE DATAS Permite converter uma string para um qualquer formato de data especificado pelo utilizador. Os parâmetros para a definição de datas são os seguintes: as.Date() %a, %A ‐ Nome do dia da semana abreviado e completo %b, %B ‐ Nome do mês abreviado e completo. %d ‐ Dia do mês – . %H ‐ (oras – . %I ‐ (oras – . %j ‐ Dia do ano – . %m ‐ Mês – . %M ‐ Minutos – . %p ‐ )ndicador AM/PM. %S ‐ Segundos como número decimal – . %U ‐ Número da semana – , sendo que o primeiro Domingo é o dia da semana . %w ‐ Dia da semana – , Domingo é considerado . %W ‐ Semana – , sendo que a primeira segunda‐feira é o dia da semana . %y ‐ Ano sem indicação do século – . Nota: pode gerar alguns problemas de compatibilidade. %Y ‐ Ano completo com indicação do século. %z ‐ Offset a partir de Greenwich; ‐ é considerado horas a oeste de Greenwich. %Z ‐ Fuso horário como texto vazio se não estiver disponível . Exemplos: myDate<-as.Date('10-Jan-1993',format='%d-%b-%Y') # [1] "1993-01-10" class(myDate) # [1] "Date" # Data expressa localmente format(Sys.Date(), "%A %d de %B de %Y") [1] "sábado 25 de Abril de 2009" CICLOS E EXPRESSÕES CONDICIONAIS Permite a construções de blocos de execução controlados por estruturas condicionais. Exemplos: # Determinar a classe etária a que pertence um determinado valor x <- 29 if(cond_1){ … }, else if(cond_2) { … }, else{ … } ifelse(test, yes, no) switch() 11 if (x < 18){ y <- "CLASSE 1" print(y) } else if (x < 35){ y <- "CLASSE 2" print(y) } else{ y <- "CLASSE 3" print(y) } # Output: # [1] "CLASSE 2" Atribui ou executa uma expressão diferente caso a expressão test seja verdadeira ou falsa. Caso seja verdadeira yes verifica‐se, caso contrário no. Exemplos: sqrt(ifelse(x >= 0, x, NA)) # Não produz qualquer aviso # [1] 2.449490 2.236068 2.000000 1.732051 1.414214 1.000000 0.00000 NA NA NA NA x <- sample(-2:2,5) ifelse(x>0,"Maior","Menor") # [1] "Maior" "Menor" "Menor" "Maior" "Menor" Avalia uma expressão seleccionando‐a de acordo com elementos pasados em … . Alternativa para blocos if, else if, else. Exemplo: R ‐ Lista de funções centre <- function(x, type) { switch(type, mean = mean(x), median = median(x), trimmed = mean(x, trim = .1)) } x<-runif(100) centre(x, type="trimmed") # [1] 0.4351297 Cria um ciclo cujo elemento de contagem ou outro consoante o tipo é dado por i. Exemplos: for(i in LETTERS) print(I, quote=FALSE) # A, B, C, … for(i in 1:10) for(i in var) for(i # [1] # [1] # [1] # [1] # [1] in 1:5) print(1:i) 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 for(n in c(2,5,10,20,50)) { x <- stats::rnorm(n) cat(n,":", sum(x^2),"\n") } # 2 : 2.190857 # 5 : 3.837692 # 10 : 15.03589 # 20 : 18.00835 # 50 : 57.27886 Cria um ciclo que apenas pode ser terminado por uma declaração break. Exemplo: repeat i<-1 repeat{ cat(paste("N =", i, "\n")) i<-i+1 if(i>10) break # interrompe a execução do ciclo } Enquanto a condição definida não for atingida ou uma declaração break o ciclo continua em execução. Exemplos: while() next break x<-1 y<-runif(4) while(x<=length(y)){ print(y[1:x]) x<-x+1 } # [1] 0.3702356 # [1] 0.37023563 0.02636789 # [1] 0.37023563 0.02636789 0.36209310 # [1] 0.37023563 0.02636789 0.36209310 0.84610871 Permite saltar o passo actual do ciclo, geralmente associado a um bloco condicional. Termina normal ou anormalmente o ciclo em execução através, geralmente, de uma dada condição. DEBUGGING E CONTROLO DE ERROS debug() recover() traceback() try() 12 Possibilita a introdução de uma marca de debugging numa determinada função. Com esta marca a execução normal da função é suspensa e cada declaração da função é avaliada individualmente Esta função possibilita a exploração das chamadas de funções activas. Pode ser activada como opção de erro com: option(error=recover). Por defeito a função imprime a sequência de chamadas que gerou o último erro não capturado. Útil quando os erros não têm identificação. A função permite lidar com recuperação de erros devido a expressões que poderão falhar e.g.: inclusão de stop() numa avaliação condicional . Versão simplificada da função tryCatch(). R ‐ Lista de funções Permite lidar com situações menos usuais incluindo erros e avisos. tryCatch() Termina a execução da expressão actual e executa uma mensagem de erro. stop() stopifnot(…) message(…) supressMessages(expr) Se alguma das expressões introduzidas em … for não verdadeira então a função stop() é chamada, produzindo um erro que indica qual a primeira expressão não verdadeira. Gera uma mensagem de diagnóstico a partir dos argumentos da função. Avalia a expressão em argumento suprimindo todas as mensagens de diagnóstico simples. Gera uma mensagem de aviso a partir do argumento da função e da expressão a partir da qual a função foi chamada opcional . suppressWarnings(expr) Avalia a expressão em argumento suprimindo todas as mensagens de aviso. warning(..., call.) GRÁFICOS Funções de controlo sobre dispositivos gráficos dev.new() dev.set() dev.cur() dev.list() dev.next() dev.prev() dev.off() windows() win.metafile(), pdf(), postscript(), jpeg(), bmp(), png(), tiff() Abre um novo dispositivo e devolve o valor de retorno associado. Estabelece qual o dispositivo activo. Devolve o valor de retorno do dispositivo activo. Lista todos os dispositivos. Devolve o valor do próximo dispositivo activável. Devolve o valor do anterior dispositivo activável. Fecha o dispositivo definido por defeito o dispositivo activo . Abre um novo dispositivo com as características definidas. Abre dispositivos gráficos para diversos formatos de output. As opções referem‐se aos formatos Metaficheiro do Windows wmf , Portable Document Format pdf , Postscript ps , Joint Photographic Experts Group jpg , Bitmap bmp , Portable Network Graphics png , Tagged )mage File tif . Funções de controlo sobre screens split.screen() screen() erase.screen() close.screen() A função split.screen define um número de regiões dentro de um dispositivo gráfico que podem, até certo ponto, comportarem‐se como diferentes dispositivos gráficos. Esta função é bastante útil para fazer diferentes gráficos num único dispositivo. Também possibilita a subdivisão dos diferentes screens para permitir arranjos bastante complexos e personalizados. Selecciona o screen a utilizar. Quando alguma função de geração de gráficos é chamada esse screen é usado para exibir a figura. A numeração dos diferentes screens é feita a partir do canto superior esquerda no sentido dos ponteiros do relógio. Usa‐se para eliminar o conteúdo do screen, esta acção é feita preenchendo‐o com a cor de fundo especificada, caso esta seja transparente parecerá que a acção de erase.screen não foi efectuada. Para obviar este efeito pode usar‐se par(bg=”white”) para atribuir uma cor opaca branco ao fundo. Remove o screen especificado. Exemplos: # Cria um novo dispositivo gráfico com 2×2 screens com fundo branco if(dev.cur()!=1) dev.off() split.screen(figs=c(2,2)); par(bg="white") # Usa os diferentes screens criados para exibir gráficos screen(1) # Utiliza o screen 1 plot(ECDF<-ecdf(rnorm(100))) screen(2) # Utiliza o screen 2 plot(cars); abline(coef(line(cars))) screen(3) # Utiliza o screen 3 data(iris) plot(iris[,1],iris[,3]); title("Iris I") screen(4) # Utiliza o screen 4 plot(iris[,1],iris[,4]); lines(lowess(iris[,1],iris[,4], f=.2), col = "blue") title("Iris II") # Elimina o conteúdo screen 1 e coloca um novo gráfico 13 R ‐ Lista de funções erase.screen(1) screen(1) plot(1:100) Funções embutidas para a geração de gráficos Função genérica que permite desenhar gráficos X‐Y. Por defeito é construído um gráfico de dispersão X‐Y, embora diversos objectos possuam métodos específicos para a geração de gráficos, tais como: data.frame, density, lm, ecdf, etc. Para consultar/definir os parâmetros deve ser usada a função par(). Exemplos: # Distribuição de 100 pontos gerados aleatoriamente com distribuição normal plot(rnorm(100)) # Função sen(x) plot(sin,-pi,2*pi) plot(x, y, …) # Função linear do tipo y=ax+b no domínio [0,100] x<-seq(0,100,0.5); y<-2*x+10 plot(x,y,type=”l) # O mesmo exemplo lin<-function(x)return(2*x+10) plot(lin,0,100) # Função empírica de distribuição acumulada plot(ecdf(rnorm(500)),verticals=TRUE,col.points='blue',col.hor='red',col.vert='bisque ') # Data frame data(iris) clrs<-Cs(orange,grey,blue) plot(iris,pch=1:3,col=clrs) # Utilizando fórmulas data(iris); clrs<-Cs(orange,grey,blue) plot(Petal.Length~Petal.Width,data=iris,pch=1:3,col=clrs) Permite construir o histograma dos dados introduzidos no argumento x. Se plot=TRUE então é produzido um gráfico do histograma por plot.histogram() antes de ser devolvido o resultado da função. Exemplos: hist(x, breaks, freq, plot) boxplot(x, …) / boxplot(formula , data, …, subset) op<-par(mfrow=c(2,1)) hist(islands) hist(islands,col="gray",labels=TRUE) # O mesmo gráfico com barras a cinza e legendas # Outro exemplo y <- rnorm(500) hist(y,axes=TRUE,border="grey",col="light grey") box(col="grey") rug(y,ticksize=0.03) Produz a caixa de bigodes dos valores introduzidos em x podendo estes estar agrupados . Exemplos: # Caixa de bigodes de todas as colunas data(iris) boxplot(iris) # Caixa de bigodes da coluna Sepal.Length por cada uma das espécies de iris boxplot(Sepal.Length~Species,data=iris) MISCELÂNEA # q() / quit() setwd(), getwd() list.files / dir(path, recursive pattern) INSTALL 14 Permite introduzir comentários de linha, ou seja, tudo o que for colocado à direita deste símbolo até ao final da linha será ignorado pelo R. Sai da consola terminando a sessão actual do R, permitindo guardá‐la. Estabelece ou devolve o directório de trabalho actual do R. Lista todos os ficheiros presentes no directório de trabalho por defeito , ou no directório definido pelo argumento path. Permite leitura recursiva recursive e correspondência por expressões regulares pattern . Permite instalar ou remover pacotes/bibliotecas. R ‐ Lista de funções REMOVE library() require() is(object, class ) is.numeric() is.character() is.na() as() as.numeric() as.character() as.matrix() as.data.frame() Carrega um determinado pacote/biblioteca especificada. Verifica se um determinado objecto object tem a classe definida no segundo argumento class2 . O output destas funções é TRUE ou FALSE caso o objecto testado seja ou não do tipo especificado. Verifica se o objecto x é do tipo numérico. Verifica se o objecto x é do tipo texto. Verifica se o objecto x é, ou se posui no caso de ser uma matriz ou data frame um valor em falta NA . Função genérica usada para converter o objecto para um certo tipo/classe. Passa o objecto para o tipo numérico Passa o objecto para o tipo texto. Converte para o tipo matriz. Converte para o tipo data frame. Permite passar um número variável de argumentos para outras funções quando usada como argumento de uma função definido pelo utilizador. Exemplo: … f.1 <- function(x) return(log(x^-1)) f.2 <- function(y, ...) print(y + f.1(...)) f.2(y=10, x=20) # o argumento x é passado para f.1 # [1] 7.004268 on.exit() parse() eval() Executa a operação definida quando uma função termina normal ou anormalmente. Útil para acções de limpeza de objectos e gráficos. Devolve uma expressão não avaliada numa lista. Avalia uma expressão como código dentro de um determinado ambiente. O exemplo seguinte permite avaliar uma string como código: eval(parse(text=paste("xy<-", "c(1,2,3)", sep=""))) ## 1 2 3 system(command) shell(cmd) shell.exec() Executa o comando do SO especificado pelo argumento command. Executa o comando especificado em cmd usualmente através de uma shell. Abre o ficheiro ou URL usando para esse efeito a aplicação especificada no sistema de associação de ficheiros do Windows. VARIÁVEIS PREDEFINIDAS E INFORMAÇÕES DO SISTEMA Sys.info() Sys.getenv() sessionInfo() .Platform .Machine R.version options() / getOption() / .Options letters LETTERS month.abb, month.name colors() colours() 15 Extrai/reporta informação sobre o sistema/utilizador. Obtém o valor da s variável ambiental especificada. Mostra uma sinopse do sistema e da sessão do R em execução. Lista contendo detalhes acerca da plataforma em que o R foi compilado. Providencia um modo de escrever código interoperável entre diferentes SO. Variável predefinida que contém informações relativas as características numéricas do sistema. Detalhes sobre a versão do R em execução. Permite estabelecer ou examinar as opções de escopo global do R. Apresenta todas as letras do alfabeto em minúsculas e maiúsculas respectivamente. Abreviaturas de letras e nome completo dos meses em inglês. A variante format(ISOdate(2000, 1:12, 1), "%b") e format(ISOdate(2000, 1:12, 1), "%B") mostram a mesma informação em formato )SO PT . Devolve os nomes das cores embutidas no sistema. O seguinte código permite visualizar todas as cores disponíveis: R ‐ Lista de funções show.colors <- function(x=22,y=30){ par(mai=c(.4,.4,.4,.4), oma=c(.2,0,0,.2)) plot(c(-1,x),c(-1,y), xlab='', ylab='', type='n', xaxt='n', yaxt='n', bty='n') for(i in 1:x){for(j in 1:y){ k <- y*(i-1)+j ; co <- colors()[k] rect(i-1, j-1, i, j, col=co, border=1)}} text(rep(-.5,y),(1:y)-.5, 1:y, cex=1.2-.016*y) text((1:x)-.5, rep(-.5,x), y*(0:(x-1)), cex=1.2-.022*x) title('col=colors()[n]') } show.colors() ANÁLISE ESTATÍSTICA Modelos lineares lm(formula, data) fitted() resid() predict() Utiliza‐se para criar modelos lineares pelo método dos mínimos quadrados . A fórmula definida no primeiro argumento ‐ formula tem a seguinte estrutura: var.dependente ~ var.independente01 + var.independente02 + … Funções genéricas utilizadas para obter, respectivamente, os resultados previstos pelo modelo e os resíduos. Função genérica usada para calcular os resultados previstos por um objecto de modelação. Em modelos lineares o parâmetro interval = “confidence” permite obter o intervalo de confiança dos resultados previstos para um dado level. BOAS PRÁTICAS DE PROGRAMAÇÃO ‐ Evitar a utilização de objectos temporários em funções, especialmente quando são utilizados apenas uma vez. ‐ Preferencialmente devem ser usadas regras lógicas no interior dos índices dos objectos para fazer indexação/sub‐selecção em objectos do tipo matriz, data frame ou vector em vez de ciclos for, while, etc. . ‐ Para estabelecer a forma de lidar com valores em falta, diferentes opções podem ser estabelecidas. Com options(na.action="na.exclude") os valores em falta são assinalados por NA. Com a opção na.omit são eliminados da base de dados. Para ver a opção getOption("na.action") relativa ao tratamento destes casos. ‐ Em vez de ciclos através dos elementos de um vector, matriz ou data frame as funções apply(), lapply() ou sapply() devem ser utilizadas devido a sua maior eficácia em tempo de execução. ‐ Para efeitos de gestão eficaz da memória os objectos deverão ser iniciados com o número de elementos necessário em vez de usar recorrentemente as funções c(), rbind() ou cbind(). ‐ A utilização de tabulações para formatar os scripts deve ser efectuada para melhor definir o nível/âmbito de execução de uma determinada expressão. ‐ Utilizar TRUE e FALSE em vez de T e F, para melhor distinção. 16 R ‐ Lista de funções