English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tipos de Dados no R

O tipo de dados é um sistema amplo usado para declarar variáveis ou funções de diferentes tipos.

O tipo da variável determina o espaço de armazenamento ocupado pela variável e como interpretar o padrão de bits armazenados.

Os tipos de dados mais básicos no R têm três principais:

  • número

  • lógico

  • texto

Os constantes numéricas têm dois tipos principais:

tipos gerais123    -0.125
notação de exponencial científico1.23e2    -1.25E-1

O tipo lógico, frequentemente chamado de tipo booleano em outras linguagens de programação, tem apenas valores TRUE e FALSE.

Cada elemento do vetor pode ser extraído individualmente por meio de um índice:O R distingue maiúsculas e minúsculas, true ou True não representam TRUE.

O tipo de dados mais intuitivo é o tipo de texto. O texto é o que aparece frequentemente em outras linguagens, constantes contidas entre aspas duplas. No R, as constantes de texto podem ser contidas entre aspas simples ou duplas, por exemplo:

> 'w3codebox' == "w3codebox"
[1] TRUE

A definição de variáveis no R não é como nas regras de sintaxe de linguagens de programação fortes, não é necessário definir o nome e o tipo de dados da variável especificamente, a cada vez que usar o operador de atribuição no R, na verdade é definir uma nova variável:

a = 1
b <- TRUE
b = "abc"

Dividindo por tipo de objeto é o seguinte 6 espécies (serão detalhadas posteriormente):

vetor

O vetor (Vector) está presente nas bibliotecas padrão de linguagens de programação específicas como Java, Rust, C#, porque o vetor é uma ferramenta indispensável nas operações matemáticas - o vetor mais comum é o vetor bidimensional, que é inevitavelmente usado no sistema de coordenadas bidimensional.

Do ponto de vista da estrutura de dados, um vetor é uma lista linear, que pode ser vista como um array.

No R, um vetor como tipo existe para tornar as operações de vetores mais fáceis:

> a = c(3, 4)
> b = c(5, 0)
> a + b
[1] 8 4
>

c() é uma função que cria vetores.

Aqui, somamos dois vetores bidimensionais para obter um novo vetor bidimensional (8, 4Se uma matriz bidimensional e um vetor tridimensional forem operados, perderão o significado matemático, embora continuem a executar, mas serão alertados.

Eu recomendo que você evite esse tipo de situação hábito.

Eu recomendo que você evite esse tipo de situação hábito.

> a = c(10, 20, 30, 40, 50)
O R também pode extrair uma parte do vetor de forma conveniente:2]
[1] 20

Cada elemento do vetor pode ser extraído individualmente por meio de um índice:Atenção: 1 Os "índices" do R não representam deslocamentos, mas sim qual é o primeiro, ou seja, a partir de

Começando!

O R também pode extrair uma parte do vetor de forma conveniente:1:4> a[ 1 até 4 ] # Extraír o 1 E o 4 Item
[1] 10 20 30 40
> a[c(1, 3, 5) # Extraír o 1, 3, 5 Item
[1] 10 30 50
> a[c(-1, -5) # Remover o 1 E o 5 Item
[1] 20 30 40

Esses três métodos de extração de partes são os mais comuns.

Os vetores suportam cálculos escalar:

> c(1.1, 1.2, 1.3) - 0.5
[1NA6 0.7 0.8
> a = c(1,2)
> a ^ 2
[1] 1 4

As funções de operações matemáticas comuns, como sqrt, exp, etc., também podem ser usadas para operações escalar em vetores.

"Vetor" como estrutura de tabela linear, deve possuir algumas funções comuns de tratamento de tabela linear, e o R realmente possui essas funções:

Ordenação de vetores:

> a = c(1, 3, 5, 2, 4, 6)
> sort(a)
[1] 1 2 3 4 5 6
> rev(a)
[1] 6 4 2 5 3 1
> order(a)
[1] 1 4 2 5 3 6
> a[order(a)]
[1] 1 2 3 4 5 6

A função order() retorna um vetor de índices após a ordenação do vetor.

Estatística de vetores

No R, há uma função estatística completa:

Nome da funçãoSignificado
sumSomar
meanCalcular a média
varVariança
sdDesvio padrão
minMínimo
maxMáximo
rangeFaixa de valores (vetor bidimensional, valor máximo e valor mínimo)

Exemplo de estatística de vetores:

> sum(1:5)
[1] 15
> sd(1:5)
[1] 1.581139
> range(1:5)
[1] 1 5

geração de vetores

A geração de vetores pode ser feita com c() gerada, ou pode usar o operador min:max para gerar uma sequência contínua.

Se quiser gerar uma sequência aritmética com intervalos, pode usar a função seq Função:

> seq(1, 9, 2)
[1] 1 3 5 7 9

Seq também pode gerar uma sequência aritmética de m até n, basta especificar m, n e o comprimento da sequência:

> seq(0, 1, length.out=3)
[1NA 0.0 0.5 1.0

Rep é a abreviação de repeat (repetir), pode ser usada para gerar sequências de números repetidos:

> rep(0, 5)
[1NA NA NA NA NA

Em vetores, frequentemente se usa NA e NULL, aqui apresentamos essas duas palavras e suas diferenças:

  • NA representa "ausência", NULL representa "inexistência".

  • NA representa uma ausência, como um marcador de posição, indicando que não há um valor aqui, mas a posição existe.

  • NULL representa a ausência de dados.

Exemplo de explicação:

> length(c(NA, NA, NULL))
[1] 2
> c(NA, NA, NULL, NA)
[1NA NA NA

Claramente, NULL não tem qualquer significado em um vetor.

Lógico

Os vetores lógicos são usados principalmente nas operações lógicas de vetores, por exemplo:

> c(1, 2, 3) > 2
[1] FALSE FALSE  TRUE

A função which é uma função comum de manipulação de vetores lógicos, usada para filtrar índices de dados que precisamos:

> a = c(1, 2, 3)
> b = a > 2
> print(b)
[1] FALSE FALSE  TRUE
> which(b)
[1] 3

Por exemplo, precisamos de filtrar itens maiores ou iguais a 60 E menor que 70 Dos dados:

> vector = c(10, 40, 78, 64, 53, 62, 69, 70)
> print(vector[which(vector >= 60 & vector < 70)])
[1] 64 62 69

Existem funções semelhantes como all e any:

> all(c(TRUE, TRUE, TRUE))
[1] TRUE
> all(c(TRUE, TRUE, FALSE))
[1] FALSE
> any(c(TRUE, FALSE, FALSE))
[1] TRUE
> any(c(FALSE, FALSE, FALSE))
[1] FALSE

all() é usado para verificar se todos os vetores lógicos são TRUE, any() é usado para verificar se o vetor lógico contém TRUE.

String

Os dados de string não são complicados em si mesmos, aqui se enfatiza a introdução de funções de operação de string:

> toupper("w3codebox") # Converter para maiúsculas
[1] "w3codebox"
> tolower("w3codebox") # Converter para minúsculas
[1] "w3codebox"
> nchar("中文", type="bytes") # Contar o comprimento em bytes
[1] 4
> nchar("中文", type="char") # Contar o número total de caracteres
[1] 2
> substr("123456789", 1, 5) # Cortar string, de 1 até 5
[1] "12345"
> substring("1234567890", 5) # Cortar string, de 5 até o final
[1] "567890"
> as.numeric("12") # Converter string para número
[1] 12
> as.character(12.34) # Converter número para string
[1] "12.34"
> strsplit("2019;10;1", ";") # Separar string por delimitador
[[1]]
[1] "2019" "10"  "1"
> gsub("/", "-", "2019/10/1") # Substituir string
[1] "2019-10-1"

no computador Windows, usando o padrão de codificação GBK, então um caractere chinês é de dois bytes, se no UTF-8 no computador codificado, o comprimento em bytes de um caractere chinês simples deve ser 3.

R suporta expressões regulares no formato Perl:

> gsub("[[:alpha:]]+", "$", "Two words")
[1] "$ $"

Mais conteúdo sobre strings, consulte:Introdução às Strings no R.

Matriz

O R oferece tipos de dados de matrizes para a pesquisa em álgebra linear, uma estrutura de dados semelhante a arrays bidimensionais em outros idiomas, mas o R oferece suporte de operações de matrizes no nível da linguagem.

Primeiro, vamos ver a geração da matriz:

> vector=c(1, 2, 3, 4, 5, 6)
> matrix(vector 2, 3)
     [1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

O conteúdo inicial da matriz é passado por um vetor, que também expressa quantas linhas e colunas a matriz tem.

Os valores de um vetor são preenchidos coluna por coluna na matriz. Se você quiser preencher linha por linha, você precisa especificar o atributo byrow:

> matrix(vector 2, 3, byrow=TRUE)
     [1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

Cada valor de uma matriz pode ser acessado diretamente:

> m1 = matrix(vector 2, 3, byrow=TRUE)
> m1[1,1] # O 1 Linha 第 1 Coluna 
[1] 1
> m1[1,3] # O 1 Linha 第 3 Coluna
[1] 3

Cada coluna e linha de uma matriz no R pode ser nomeada, e este processo é feito em lote por um vetor de strings:

> colnames(m1) = c("x", "y", "z")
> rownames(m1) = c("a", "b")
> m1
  x y z
a 1 2 3
b 4 5 6
> m1["a", ]
x y z 
1 2 3

As operações aritméticas de matrizes são básicamente idênticas às de vetores, podendo ser feitas com escalares ou com matrizes de mesmo tamanho em posições correspondentes.

Operações de Multiplicação de Matrizes:

> m1 = matrix(c(1, 2), 1, 2)
> m2 = matrix(c(3, 4), 2, 1)
> m1 %*% m2
     [1]
[1,]   11

Matriz Inversa:

> A = matrix(c(1, 3, 2, 4), 2, 2)
> solve(A)
     [1] [,2]
[1,] -2.0  1.0
[2,]  1.5 -0.5

A função apply() pode operar cada linha ou coluna de uma matriz como um vetor:

> (A = matrix(c(1, 3, 2, 4), 2, 2))
     [1] [,2]
[1,]    1    2
[2,]    3    4
> apply(A, 1, sum) # O segundo parâmetro é 1 Operações por linha, usando a função sum()
[1] 3 7
> apply(A, 2, sum) # O segundo parâmetro é 2 Operações por coluna
[1] 4 6

Mais conteúdo sobre matrizes, consulte:Matrizes no R.