Programação em R – Parte 2 (manipulações simples; números e vetores)

//Programação em R – Parte 2 (manipulações simples; números e vetores)

Programação em R – Parte 2 (manipulações simples; números e vetores)

Programação em R - Aprenda Analtics, Big Data & Ciência de Dados

Confira todos os textos da série Programação em R:


Vetores e
atribuição

R opera em
estruturas de dados nomeadas. A estrutura mais simples é o vetor
numérico, que é uma entidade única constituída por uma coleção
ordenada de números. Para configurar um vetor chamado x, digamos,
consistindo de cinco números, nomeadamente 10.4, 5.6, 3.1, 6.4 e
21.7, use o comando R
> x

Esta é uma
declaração de atribuição usando a função c () que neste
contexto pode ter um número arbitrário de argumentos vetoriais e
cujo valor é um vetor obtido concatenando seus argumentos de ponta a
ponta.
Um número que
ocorre por si mesmo em uma expressão é tomado como um vetor de
comprimento um.
Observe que o
operador de atribuição (‘

A atribuição
também pode ser feita usando a função attrib (). Uma
maneira equivalente de fazer a mesma tarefa como a acima é com:
> attrib (“x”, c (10.4, 5.6, 3.1, 6.4, 21.7))
O operador usual,

As atribuições
também podem ser feitas na outra direção, usando a mudança óbvia
no operador de atribuição. Então, a mesma tarefa poderia ser feita
usando
> c (10,4,
5,6, 3,1, 6,4, 21,7) -> x
Se uma expressão
for usada como um comando completo, o valor será impresso e perdido.
Então, agora, se usássemos o comando
> 1 / x
os respectivos cinco valores seriam impressos no terminal (e o valor de x, é claro,
estaria inalterado).
A atribuição
adicional
> y

criaria um vetor y
com 11 entradas consistindo de duas cópias de x com um zero no meio.

Aritmética
do vetor

Os vetores podem ser
usados ​​em expressões aritméticas, caso em que as operações
são executadas elemento por elemento. Os vetores que ocorrem na
mesma expressão não precisam ser todos do mesmo comprimento. Se não
forem, o valor da expressão é um vetor com o mesmo comprimento que
o vetor mais longo que ocorre na expressão. Os vetores mais curtos
na expressão são reciclados com a frequência necessária (talvez
fracionalmente) até que correspondam ao comprimento do vetor mais
longo. Em particular, uma constante é simplesmente repetida. Então,
com as atribuições acima, o comando
> v

gera um novo vetor v
de comprimento 11 construído pela adição, elemento por elemento,
2*x repetidos 2,2 vezes, e repetidos apenas uma vez e 1 repetido 11
vezes.
Os operadores
aritméticos elementares são os mais comuns +, -, *, / e ^ para
aumentar a potência. Além disso, todas as funções aritméticas
comuns estão disponíveis. log, exp, sin, cos, tan, sqrt, e assim
por diante, todas têm seu significado usual. max e min selecionam os
maiores e menores elementos de um vetor, respectivamente. O intervalo
é uma função cujo valor é um vetor de comprimento dois, ou seja,
c (min (x), max (x)). O length (x) é o número de elementos em
x, sum (x) dá o total dos elementos em x e prod (x) o produto.
Duas funções
estatísticas são mean (x) que calcula a média da amostra, que é
o mesmo que  sum (x) / length (x) e var (x) que dá
sum((x-mean
(x))^2)/(length(x) -1)
ou a variância da
amostra. Se o argumento para var () for uma matriz n-por-p, o valor é
uma matriz de covariância de amostra p-por-p obtida em relação às
linhas como vetores de amostra independentes p-variável.
order (x)
retorna um vetor do mesmo tamanho que x com os elementos dispostos em
ordem crescente; no entanto, existem outras facilidades de
classificação mais flexíveis disponíveis (veja order() ou
sort.list () que produzem uma permutação para fazer a
classificação).
Observe que max e
min selecionam os maiores e menores valores em seus argumentos, mesmo
que sejam dados vários vetores. As funções máxima e mínima
paralelas pmax e pmin retornam um vetor (de comprimento igual ao seu
argumento mais longo) que contém em cada elemento o maior (menor)
elemento dessa posição em qualquer um dos vetores de entrada.
Para a maioria dos
propósitos, o usuário não se preocupará se os “números”
em um vetor numérico forem inteiros, reais ou até mesmo complexos.
Os cálculos internos são feitos como números reais de dupla
precisão ou números complexos de dupla precisão se os dados de
entrada forem complexos.
Para trabalhar com
números complexos, forneça uma parte complexa explícita. portanto
sqrt (-17)
dará a NaN e um
aviso, mas
sqrt (-17 +
0i)
irá fazer os
cálculos com números complexos.

Gerando
sequências regulares

R possui várias
facilidades para gerar seqüências de números comumente usadas. Por
exemplo, 1:30 é o vetor c (1, 2, …, 29, 30). O operador de dois pontos tem alta prioridade dentro de uma expressão, então, por exemplo, 2
* 1: 15 é o vetor c (2, 4, …, 28, 30). Coloque n

A construção 30: 1
pode ser usada para gerar uma seqüência que vai para trás.
A função seq () é
uma facilidade mais geral para gerar seqüências. Tem cinco
argumentos, apenas alguns dos quais podem ser especificados em
qualquer chamada. Os dois primeiros argumentos, se dados, especificam
o início e o fim da seqüência, e se estes são os dois únicos
argumentos dados, o resultado é o mesmo que o operador do ponto.
Isso é seq (2,10) é o mesmo vetor que 2:10.
Argumentos para seq
(), e para muitas outras funções R, também podem ser dadas sob a
forma nomeada, caso em que a ordem em que aparecem é irrelevante. Os
dois primeiros argumentos podem ser nomeados de = valor e para =
valor; assim seq (1,30), seq (de = 1, para = 30) e seq (para = 30, de
= 1) são todos iguais às 1:30. Os próximos dois argumentos para
seq () podem ser nomeados por = valor e comprimento = valor, que
especificam um tamanho de incremento e um tamanho para a seqüência,
respectivamente. Se nenhum destes for dado, o padrão por = 1 é
assumido.
Por exemplo
> seq (-5,
5, by = .2) -> s3
gera em s3 o vetor c
(-5,0, -4,8, -4,6, …, 4,6, 4,8, 5,0).
Similarmente
> s4

gera o mesmo vetor
em s4.
O quinto argumento
pode ser chamado de along = vetor, que normalmente é usado como o
único argumento para criar a seqüência 1, 2, …, o comprimento
(vetor) ou a seqüência vazia se o vetor estiver vazio (como pode
acontecer).
Uma função
relacionada é rep () que pode ser usada para replicar um objeto de
várias maneiras complicadas. A forma mais simples é
> s5

que colocará cinco
cópias de x de ponta a ponta na s5. Outra versão útil é
> s6

que repete cada
elemento de x cinco vezes antes de passar para o próximo.

Vetores
lógicos

Além dos vetores
numéricos, R permite a manipulação de quantidades lógicas. Os
elementos de um vetor lógico podem ter os valores TRUE, FALSE e NA
(para “não disponível”, veja abaixo). Os dois primeiros
são frequentemente abreviados como T e F, respectivamente. Note no
entanto que T e F são apenas variáveis ​​que são definidas
para TRUE e FALSE por padrão, mas não são palavras reservadas e,
portanto, podem ser substituídas pelo usuário. Portanto, você
sempre deve usar TRUE e FALSE.
Os vetores lógicos
são gerados por condições. Por exemplo
> temp 13
define temp como um
vetor do mesmo comprimento que x com valores FALSOS correspondentes a
elementos de x onde a condição não é atendida e onde o VERDADEIRO
está.
Os operadores
lógicos são <, <=,>,> =, == para igualdade exata e ! =
Para desigualdade. Além disso, se c1 e c2 são expressões lógicas,
então c1 e c2 são suas interseções (“e”), c1 | c2 é a
união deles (“ou”), e ! c1 é a negação de c1.
Os vetores lógicos
podem ser usados ​​na aritmética comum, caso em que são
coagidos em vetores numéricos, FALSOS tornando-se 0 e VERDADEIROS
tornando-se 1. No entanto, existem situações em que vetores lógicos
e suas contrapartes numéricas coercivas não são equivalentes, por
exemplo, veja a próxima subseção.

Valores
perdidos

Em alguns casos, os
componentes de um vetor podem não ser completamente conhecidos.
Quando um elemento ou valor está “não disponível” ou há
um “valor perdido” no sentido estatístico, um lugar dentro
de um vetor pode ser reservado para ele, atribuindo-lhe o valor
especial NA. Em geral, qualquer operação em NA torna-se NA. A
motivação para esta regra é simplesmente o fato de que se a
especificação de uma operação estiver incompleta, o resultado não
pode ser conhecido e, portanto, não está disponível.
A função is.na (x)
dá um vetor lógico do mesmo tamanho que x com o valor VERDADEIRO se
e somente se o elemento correspondente em x for NA.
> z

Observe que a
expressão lógica x == NA é bastante diferente de is.na (x), pois
NA não é realmente um valor, mas um marcador para uma quantidade
que não está disponível. Assim, x == NA é um vetor do mesmo
comprimento que x, todos cujos valores são NA, pois a própria
expressão lógica está incompleta e, portanto, indecidível.
Nota-se que há um
segundo tipo de valores “perdidos” que são produzidos por
computação numérica, os chamados valores Não um Número,
NaN. Exemplos são
> 0/0
ou
> Inf –
Inf
que ambos resultam
em NaN uma vez que o resultado não pode ser definido com
sensibilidade.
Em resumo, is.na
(xx) é VERDADEIRO tanto para valores NA quanto para NaN. Para
diferenciar estes, is.nan (xx) é apenas VERDDEIRO para NaNs.
Os valores que
faltam são às vezes impressos como quando os vetores de
caracteres são impressos sem aspas.

Vetores de
caracteres

As quantidades de
caracteres e os vetores de caracteres são usados ​​com
freqüência em R, por exemplo, como rótulos de plotagem. Quando
necessário, eles são denotados por uma seqüência de caracteres
delimitada pelo caractere de cotação dupla, por exemplo,
“valores-x”, “Novos resultados de iteração”.
As cadeias de
caracteres são inseridas usando as citações duplas (“) ou um
simples (‘), mas são impressas usando aspas duplas (ou às vezes sem
aspas). Elas usam as seqüências de escape do estilo C, usando
como o caractere de escape, então é inserido e impresso como
e dentro de aspas duplas “é inserido como “. Outras
seqüências de escape úteis são n, newline, t, tab e b,
backspace. Cotações para uma lista completa.
Os vetores de
caracteres podem ser concatenados em um vetor pela função c ();
Exemplos de seu uso emergirão com freqüência.
A função paste()
assume uma quantidade arbitrária de argumentos e concatena-os um a
um em strings de caracteres. Qualquer número dado entre os argumentos
é coagido em strings de caracteres da maneira evidente, ou seja, da
mesma forma que seria se fossem impressas. Os argumentos são, por
padrão, separados no resultado por um único caractere em branco,
mas isso pode ser alterado pelo argumento nomeado, sep = string, que
o muda para uma string, possivelmente vazia.
Por exemplo
> labs

cria labs nos
vetores dos caracteres
c (“X1”,
“Y2”, “X3”, “Y4”, “X5”, “Y6”,
“X7”, “Y8”, “X9”, “Y10”).
Nota-se
particularmente que a reciclagem de listas curtas também ocorre
aqui; assim c(“X”,”Y”) é repetido 5 vezes para
coincidir com a sequência 1:10. 9

Vetores de
índice; selecionando e modificando subconjuntos de um conjunto de
dados

Os subconjuntos dos
elementos de um vetor podem ser selecionados anexando ao nome do
vetor um vetor de índice entre colchetes. Geralmente, qualquer
expressão que se avalia em um vetor pode ter subconjuntos de seus
elementos selecionados de forma semelhante ao adicionar um vetor de
índice entre colchetes imediatamente após a expressão.
Esses vetores de
índice podem ser um desses quatro tipos distintos.
  1. Um vetor
    lógico
    . Nesse caso, o vetor do índice é reciclado no mesmo
    comprimento que o vetor a partir do qual os elementos devem ser
    selecionados. Os valores correspondentes a VERDADEIROS no vetor de
    índice são selecionados e aqueles que correspondem a FALSOS são
    omitidos. Por exemplo
> y

cria (ou recria) um
objeto y que conterá os valores não faltantes de x na mesma ordem.
Observe que se x tiver valores faltantes, y será menor do que x.
Além disso
> (x
+ 1) [(! is.na (x)) & x> 0] -> z
cria um objeto z
e coloca nele os valores do vetor x + 1 para o qual o valor
correspondente em x não era faltante e positivo.
2. Um vetor de
quantidades integrais positivas.
Nesse caso, os valores no vetor
do índice devem estar no conjunto {1, 2, …,
comprimento (x)}. Os elementos correspondentes do vetor são
selecionados e concatenados, nessa ordem, no resultado. O vetor de
índice pode ser de qualquer comprimento e o resultado é do mesmo
comprimento que o vetor do índice. Por exemplo x [6] é o sexto
componente de x e
> x [1:10]
seleciona os
primeiros 10 elementos de x (supondo que o comprimento (x) não seja
inferior a 10). Além disso
> c (“x”,
“y”) [rep (c (1,2,2,1), vezes = 4)]
(uma coisa
certamente improvável de se fazer) produz um vetor de caracteres de
comprimento 16 que consiste em “x”, “y”, “y”,
“x” repetido quatro vezes.
3. Um vetor de
quantidades integrais negativas
. Esse vetor de índice especifica
os valores a serem excluídos e não incluídos. portanto
> y

dá todos, exceto os
cinco primeiros elementos do x.
4. Um vetor de
cordas de caracteres.
Esta possibilidade aplica-se apenas quando
um objeto tem um atributo de nomes para identificar seus componentes.
Neste caso, um sub-vetor do vetor de nomes pode ser usado da mesma
maneira que os rótulos integrados positivos no item 2 acima.
> fruta

> nomes
(frutas)

> almoço

A vantagem é que os
nomes alfanuméricos são geralmente mais fáceis de lembrar do que
os índices numéricos. Esta opção é particularmente útil em
relação aos quadros de dados, como veremos mais adiante.
Uma expressão
indexada também pode aparecer na extremidade receptora de uma
tarefa, caso em que a operação de atribuição é executada apenas
nos elementos do vetor. A expressão deve ser do vetor de
form
 [index_vector] como tendo uma expressão arbitrária
no lugar do nome do vetor, não faz muito sentido aqui.
Por exemplo
> x [is.na
(x)]

substitui quaisquer
valores faltantes em x por zeros e
> y [y

tem o mesmo efeito
que
> y

Outros tipos
de objetos

Os vetores são o
tipo de objeto mais importante em R, mas há vários outros que
encontraremos mais formalmente em breve.
  • matrizes ou também chamadas de arrays são generalizações multidimensionais de vetores. Na verdade, elas são vetores que podem ser indexados por dois ou mais índices e serão impressos de maneiras especiais.

  • Os fatores fornecem maneiras compactas de lidar com dados categóricos.

  • as listas são uma forma geral de vetor em que os vários elementos não precisam ser do mesmo tipo, e são muitas vezes eles próprios vetores ou listas. As listas fornecem uma maneira conveniente de retornar os resultados de uma computação estatística.

  • Os data frames são estruturas tipo matriz, nas quais as colunas podem ser de diferentes tipos. Pense neles como “matrizes de dados” com uma linha por unidade de observação, mas com (possivelmente) variáveis ​​numéricas e categóricas. Muitas experiências são descritas melhor por data frames: os tratamentos são categóricos, mas a resposta é numérica.

  • As funções são objetos próprios em R que podem ser armazenadas no espaço de trabalho do projeto. Isso fornece uma maneira simples e conveniente de estender o R.

Conclusão


Esse tal de R é poderoso não é mesmo?
Fique atento que tem muito mais por vir!

Ficou com alguma dúvida?
Tem interesse em treinamentos em R?

@page { margin: 2cm }
h2 { margin-top: 0.64cm; direction: ltr; line-height: 100%; text-align: left; page-break-inside: avoid; orphans: 2; widows: 2 }
h2.western { font-family: “Arial”, serif; font-size: 16pt; font-weight: normal }
h2.cjk { font-family: “Arial”; font-size: 16pt; font-weight: normal }
h2.ctl { font-family: “Arial”; font-size: 16pt; font-weight: normal }
p { margin-bottom: 0.25cm; border: none; padding: 0cm; line-height: 120%; text-align: left; page-break-inside: auto; orphans: 2; widows: 2; page-break-after: auto }
a:link { so-language: zxx }

By |2018-08-29T10:16:41+00:00fevereiro 8th, 2018|Sem categoria|0 Comments

About the Author:

Leave A Comment