meta data for this page
  •  
Translations of this page:
  • en

Linguagem de Programação S
Fundamentos e Aplicações em Recursos Florestais
5. Noções de Programação


5.1. Programação Orientada a Objetos

5.1.1. Funções


Como os diferentes tipos de objetos de dados já vistos, as funções do R também são objetos, mas de uma classe especial: “function”:

  1 ######################################################
  2 ########### 5 NOÇÕES DE PROGRAMAÇÃO
  3 ########### 5.1 Programação Orientada para Objetos
  4 ######################################################
  5 #  5.1.1. Funções
  6
  7 class( ls )
  8 class( log )
  9 class( sin )
 10

No caso das funções, podemos associar a elas os argumentos que elas necessitam para serem executadas:

 11 args( ls )
 12 args( log )
 13 class( args( log ) )
 14

Algumas funções matemáticas, no entanto, tem sempre apenas um argumento e são consideradas funções primitivas:

 15 args( sin )
 16 sin
 17 args( exp )
 18 exp
 19

5.1.2. O Mundo dos Objetos


Um aspecto importante num ambiente orientado a objetos é que tudo o que o ambiente trabalha é um objeto e o ambiente não pode trabalhar com nada que não seja um objeto conhecido. Inclui nessa categoria tudo aquilo que o R apresenta na tela, por isso toda saída do R pode ser guardada num objeto:

 20 # 5.1.2. O Mundo dos Objetos
 21
 22 zoo = c(7, 9, 1, 4)
 23 names(zoo) = c("onça", "anta", "tatu", "guará")
 24 length( zoo )
 25 zoo.comp = length( zoo )
 26 zoo.comp
 27 class( zoo )
 28 zoo.class = class( zoo )
 29 zoo.class
 30 class( zoo.class )
 31 names( zoo )
 32 class( names( zoo ) )
 33 length( names( zoo ) )
 34

Quando o R nos mostra, como resultado de uma operação, valores como NULL e integer(0) ele está dizendo que o resultado é vazio, isto é, não há resultado. Mas, no caso de NULL ele indica uma classe de objeto (a classe vazia), enquanto que no caso do integer(0) ele indica que o resultado é um vetor de númerios inteiros (integer) como comprimento igual a zero.

 35 b = 1:8
 36 b
 37 b.nm = names( b )
 38 b.nm
 39 b.10 = b[ b > 10 ]
 40 b.10
 41 class(b.nm)
 42 class(b.10)
 43

Veja que o NULL é um valor válidos para a atribuição:

 44 zoo2 = zoo
 45 zoo2
 46 names( zoo2 )
 47 names( zoo2 ) = NULL
 48 zoo2
 49 names( zoo2 )
 50