English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
El tipo de datos es un sistema amplio utilizado para declarar diferentes tipos de variables o funciones.
El tipo de variable determina el espacio de almacenamiento ocupado por la variable y cómo se interpreta el patrón de bits almacenado.
Los tipos de datos más básicos en R tienen principalmente tres tipos:
Numérico
Lógico
Texto
Los constantes numéricos tienen dos tipos principales:
General | 123 -0.125 |
---|---|
Notación de exponente científico | 1.23e2 -1.25E-1 |
El tipo lógico, comúnmente llamado tipo booleano (Boolean) en muchos otros lenguajes de programación, tiene solo valores TRUE y FALSE.
Atención:R distingue entre mayúsculas y minúsculas, true o True no representan TRUE.
El tipo de datos más intuitivo es el tipo de texto. El texto es lo que se conoce comúnmente como cadena (String) en otros lenguajes, y los constantes se pueden incluir entre comillas dobles. En R, los constantes de texto pueden incluirse entre comillas simples o dobles, por ejemplo:
> 'w3codebox' == "w3codebox" [1] TRUE
La definición de variables en R no es como las reglas de sintaxis de algunos lenguajes de programación de tipo fuerte, no se necesita establecer un nombre y un tipo de datos específicos para las variables; cada vez que se utiliza el operador de asignación en R, se define una nueva variable:
a = 1 b <- TRUE b = "abc"
Dividiendo por tipo de objeto, son los siguientes 6 Estos tipos se详细介绍如下:
El vector (Vector) se proporciona en las bibliotecas estándar de lenguajes de programación específicos como Java, Rust, C#, porque el vector es una herramienta indispensable en las operaciones matemáticas; el vector más común es el vector bidimensional, que se utiliza necesariamente en el sistema de coordenadas plano.
Desde el punto de vista de la estructura de datos, un vector es una lista lineal, que puede considerarse como un array.
En R, el vector como tipo de dato permite que las operaciones con vectores sean más fáciles:
> a = c(3, 4) > b = c(5, 0) > a + b [1] 8 4 >
c() es una función que crea vectores.
Aquí se suma dos vectores bidimensionales, obteniendo un nuevo vector bidimensional (8, 4Si se realiza una operación entre un vector bidimensional y un vector tridimensional, se perderá el significado matemático, aunque no se detendrá la ejecución, pero se emitirá una advertencia.
Recomiendo evitar este tipo de situación de costumbre.
Cada elemento de la matriz se puede extraer individualmente a través de un índice:
> a = c(10, 20, 30, 40, 50) ] # Tomar el2] [1] 20
Atención:Los "índices" en el lenguaje R no representan el desplazamiento, sino el cuál, es decir, desde 1 ¡desde el principio!
R también puede extraer fácilmente una parte de una matriz:
] # Tomar el1:4> a[ 1 hasta 4 ] # Tomar el 1 Y el 4 Ítem [1] 10 20 30 40 > a[c(1, 3, 5) # Tomar el 1, 3, 5 Ítem [1] 10 30 50 > a[c(-1, -5)] # Quitar el 1 Y el 5 Ítem [1] 20 30 40
Estas tres formas de extracción de partes son las más comunes.
Las matrices admiten cálculos escalares:
> c(1.1, 1.2, 1.3) - 0.5 [1NA.6 0.7 0.8 > a = c(1,2) > a ^ 2 [1] 1 4
Las funciones de operaciones matemáticas comunes que se mencionaron anteriormente, como sqrt, exp, etc., también se pueden usar para operaciones escalaras en matrices.
"Matriz" como estructura de tabla de datos lineal, debe tener algunas funciones de procesamiento de tablas de datos lineales comunes, R realmente tiene estas funciones:
Ordenamiento de matrices:
> 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
La función order() devuelve una matriz de subíndices después de ordenar la matriz.
Estadísticas vectoriales
R tiene una función estadística bastante completa:
Nombre de la función | Significado |
---|---|
sum | Sumar |
mean | Calcular el promedio |
var | Varianza |
sd | Desviación estándar |
min | Valor mínimo |
max | Valor máximo |
rango | Rango de valores (matriz bidimensional, valor máximo y valor mínimo) |
Ejemplo de estadísticas vectoriales:
> sum(1:5) [1] 15 > sd(1:5) [1] 1.581139 > range(1:5) [1] 1 5
Generación de matrices
La generación de matrices se puede hacer con c() de la función generadora, también puede usar el operador min:max para generar una secuencia continua.
Si desea generar una secuencia aritmética con intervalos, puede usar la función seq Función:
> seq(1, 9, 2) [1] 1 3 5 7 9
seq también puede generar una secuencia aritmética de m a n, simplemente especificando m, n y la longitud de la secuencia:
> seq(0, 1, length.out=3) [1NA 0.5 1.0
rep significa repetir (repetir), se puede usar para generar una secuencia de números repetidos:
> rep(0, 5) [1NA NA NA NA NA
En la matriz vectorial se utilizan a menudo NA y NULL, aquí se presentan estas dos palabras y sus diferencias:
NA representa "falta", NULL representa "ausencia".
NA representa una falta de datos como un marcador, indicando que aquí no hay un valor, pero la posición existe.
NULL representa la ausencia de datos.
Ejemplo de explicación:
> length(c(NA, NA, NULL)) [1] 2 > c(NA, NA, NULL, NA) [1NA NA NA
Claramente, NULL no tiene ningún significado en una matriz vectorial.
Los vectores lógicos se utilizan principalmente en operaciones lógicas de vectores, por ejemplo:
> c(1, 2, 3) > 2 [1] FALSE FALSE TRUE
La función which es muy común en el manejo de vectores lógicos, se puede usar para filtrar los índices de los datos que necesitamos:
> a = c(1, 2, 3) > b = a > 2 > print(b) [1] FALSE FALSE TRUE > which(b) [1] 3
Por ejemplo, si queremos filtrar de una lista lineal números mayores o iguales que 60 y menos de 70 的 datos:
> vector = c(10, 40, 78, 64, 53, 62, 69, 70) > print(vector[which(vector >= 60 & vector < 70)]) [1] 64 62 69
Hay funciones similares como all y 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() se utiliza para verificar si todos los vectores lógicos son TRUE, any() se utiliza para verificar si el vector lógico contiene TRUE.
La estructura de los datos de cadena no es compleja, aquí se enfoca en la introducción de las funciones de operación de cadena:
> toupper("w3codebox") # Convertir a mayúsculas [1] "w3codebox" > tolower("w3codebox") # Convertir a minúsculas [1] "w3codebox" > nchar("中文", type="bytes") # Longitud en bytes [1] 4 > nchar("中文", type="char") # Número total de caracteres [1] 2 > substr("123456789", 1, 5) # Cortar cadena, desde 1 hasta 5 [1] "12345" > substring("1234567890", 5) # Cortar cadena, desde 5 hasta el final [1] "567890" > as.numeric("12") # Convertir cadena a número [1] 12 > as.character(12.34) # Convertir número a cadena [1] "12.34" > strsplit("2019;10;1", ";") # Dividir cadena por separador [[1]] [1] "2019" "10" "1" > gsub("/", "-", "2019/10/1") # Reemplazar cadena [1] "2019-10-1"
en un ordenador Windows, se utiliza el estándar de codificación GBK, por lo que un carácter chino es de dos bytes, si en UTF-8 en un ordenador codificado, la longitud en bytes de un carácter chino debe ser 3.
R admite expresiones regulares en formato perl:
> gsub("[[:alpha:]]+", "$", "Two words") [1] "$ $"
Para más contenido de cadenas, consulte:Introducción a las cadenas de caracteres en R.
El lenguaje R proporciona tipos de datos de álgebra lineal, esta estructura de datos es muy similar a los dos维度数组 en otros lenguajes, pero R proporciona soporte de operaciones de matrices a nivel de lenguaje.
Primero veamos la generación de la matriz:
> vector=c(1, 2, 3, 4, 5, 6) > matrix(vector 2, 3) [1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6
El contenido inicial de la matriz se transmite por una vector, y se expresa además el número de filas y columnas de la matriz.
Los valores en un vector se llenan columna por columna en la matriz. Si se desea llenar por filas, se debe especificar el atributo byrow:
> matrix(vector 2, 3, byrow=TRUE) [1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6
Cada valor en una matriz se puede acceder directamente:
> m1 = matrix(vector 2, 3, byrow=TRUE) > m1[1,1] # El 1 Fila El 1 Columna [1] 1 > m1[1,3] # El 1 Fila El 3 Columna [1] 3
En R, cada columna y cada fila de una matriz en R puede establecerse un nombre, y este proceso se realiza mediante un vector de cadenas en lotes:
> 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
Las operaciones aritméticas de matrices son básicamente consistentes con las de vectores, tanto con escalares como con matrices de la misma escala en correspondientes posiciones.
Operaciones aritméticas de matrices:
> 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
La función apply() puede operar con cada fila o columna de una matriz como un vector:
> (A = matrix(c(1, 3, 2, 4), 2, 2)) [1] [,2] [1,] 1 2 [2,] 3 4 > apply(A, 1, sum) # El segundo parámetro es 1 Operaciones por fila, usando la función sum() [1] 3 7 > apply(A, 2, sum) # El segundo parámetro es 2 Operaciones por columna [1] 4 6
Para más contenido de matrices, consulte:Matrices en R.