Baixe o app para aproveitar ainda mais
Prévia do material em texto
Funções Aulas de 03 e 05 de fevereiro do curso de Spector Funções em R ● Você pode escrever suas próprias funções – Tome cuidado para verificar que uma função com esse nome não existe (digite o nome, se R dizer que não existe, tudo bem) ● Por que? – Você escreve o mesmo código vários vezes. Faça uma função e a chama. – Funções são salvas na área de trabalho. – É fácil escrever funções que chamam outras já existentes, mas com os argumentos que você quer – Pode passar funções customizadas para 'aggregate', 'sapply', 'by', 'apply', 'sweep', etc. Como é que Funções funcionam? Cada função em R tem um conjunto de argumentos que ela aceita. Ver na página 'help', digite o nome da função, usa a função 'args'. Você pode passar argumentos na ordem que a função espera ou pode nomear os argumentos. Exemplo com 'read.table' Se passar argumentos sem nome para 'read.table' ela esperaria 'file', depois 'header', depois 'sep', etc... Para ler o arquivo 'my.data' com 'header' como TRUE e 'sep' como ',' os seguinte comandos são equivalentes: read.table('my.data',TRUE,',') read.table(sep=',',TRUE,file='my.data') read.table(file='my.data',sep=',',header=TRUE) read.table('my.data',sep=',',header=TRUE) Continuação de 'read.table' Note que somente o argumento 'file' não tem um argumento previamente definido (default, padrão). Este argumento é obrigatório (required). Se não especificar os outros argumentos os valores padrão serão usados. A maioria das funções em R tem os primeiros argumentos sendo os mais usados. Outros opções são passados pelo sintaxe nome=valor . Exemplo com 'read.csv' Na lista de argumentos encontramos '…' . Também o encontramos na chamada à 'read.table'. '…' quer dizer todos os argumentos que foram passados à função que não correspondem aos argumentos anteriores. Qualquer argumento além de 'file', 'header', 'sep', 'quote', 'dec', ou 'fill' faz parte de '…' e será passado para 'read.table': read.csv(filename,stringsAsFactors=FALSE) Mais sobre '...' Se o argumento '…' não for incluído na definição da função, qualquer argumento desconhecido resultará em um erro. Se você quiser manipular os argumentos em '…' você pode criar uma lista deles via o comando 'list(...)' Sua própria função 'myread.csv' Vamos construir uma função que chama 'read.csv' mas que sempre tem 'stringsAsFactors' sendo FALSE. Para flexibilidade queremos poder passar outros argumentos para 'read.csv', então incluiremos '…' myread.csv = function(file,stringsAsFactors=FALSE,...) { read.csv(file,stringsAsFactors=stringsAsFactors,...) } mydata = myread.csv(filename) Aula do Spector de 05 de fevereiro Ambiente de Funções Quando você cria uma função um novo ambiente é criado e as variáveis dentro da função não são vistos, nem existem, fora da função. Você pode usar objetos no ambiente da chamada, mas qualquer mudanças feitas neles só persistem dentro do ambiente da função. Para informação da sua função chegar ao ambiente que a chamou, a função precisa passar um valor de retorno. R automaticamente retorna a última expressão que não foi atribuída a uma variável ou você pode colocar o objeto a retornar na função 'return'. Somente um único objeto pode ser retornado pela função, então múltiplos objetos podem ser retornados em uma lista e depois extraídos. Tamanhos de Objetos ● 'length' retorna: – o comprimento de um vetor, – O número de elementos em uma matriz – O número de colunas de um data frame ● 'dim' retorna: – Um vetor de comprimento 2 contendo o número de linhas e colunas de uma matriz ou data frame (pode usar as funções 'nrow' e 'ncol'. – NULL para um vetor ● 'nchar' retorna: – Numero de caracteres num 'string' – Vetor do numero de caracteres de cada 'string' num vetor de 'strings' – O número de caracteres na representação impressa de um número. Manipulação de Caracteres – 'paste' A função 'paste' converte seus argumentos em caracteres, então pode passar numeros e 'strings' para a função. Ela concatena os argumentos para criar novos 'strings' que são combinações de outros. Ela aceita um número illimitado de argumentos sem nome (que serão colados) e um ou ambos dos argumentos 'sep=' e 'collapse='. Dependendo dos argumentos ser escalares ou vetores e quais de 'sep=' e 'collapse=' são usados, muitas tarefas podem ser executadas. 'paste' ● Único argumento escalar – retorna um string ● Mais que um escalar – retorna um string com 'sep' ● Um vetor com collapse!=NULL – retorna um string ● Mais que um argumento, um sendo um vetor – retorna um vetor do comprimento do mair vetor com os outros argumentos colados (reciclando se for necessário) 'grep' A função 'grep' busca para padrões em texto. O primeiro argumento é o string ou a expressão regular que você quer achar. O segundo argumento usualmente é um vetor de caracteres. 'grep' retorna os índices dos elementos do vetor que contém o que você procura. Por enquanto só strings, mas depois, expressões regulares. :) Ver exemplos. 'strsplit' 'strsplit' recebe como entrada um vetor de strings e quebra cada elemento em pedaços baseado no valor do argumento 'split='. Este argumento pode ser um string de texto normal ou uma expressão regular. Como cada elemento do vetor pode ser quebrado em números diferentes de pedaços, os resultados de 'strsplit' são sempre retornados em uma lista. ('sapply' funciona bem com lists) 'substring' A função 'substring' permite extrair partes de um string. O primeiro argumento é um string ou vetor de strings e o segundo argumento é o índice (começando com 1) do começo do substring desejado. Sem um terceiro argumento, 'substring' retorna o novo string começando no índice especificado e continuando até o fim do string; um terceiro argumento representa o último índice do string original que será incluído no substring que é retornado. O grande valor dessa função é que é vetorizado. Você pode extrair substrings de um vetor de strings com uma chamada à função. Pode aparecer no esquerdo ou direito. 'tolower', 'toupper', 'sub' e 'gsub' ● 'tolower', 'toupper' – Essas funções convertem os argumentos a todos maiúsculos ou todos minúsculos, respectivamente. ● 'sub' e 'gsub' – substitui caracteres ou uma expressão regular por outros caracteres. 'sub' troca a primeira ocorrência, 'gsub' todas. Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17
Compartilhar