English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Les types de données se réfèrent à un système large utilisé pour déclarer des variables ou des fonctions de différents types.
Le type de variable détermine l'espace de stockage utilisé par la variable et la manière dont le schéma de bits stocké est interprété.
Les types de données de base les plus utilisés en R sont principalement trois :
numérique
logique
texte
Les constantes numériques principalement deux types :
général | 123 -0.125 |
---|---|
représentation en exposant scientifique | 1.23e2 -1.25E-1 |
Le type logique, souvent appelé type booléen (Boolean) dans d'autres langages de programmation, ne possède que les valeurs TRUE et FALSE.
注意:R distingue la casse, true ou True ne peut pas représenter TRUE.
Le type de données le plus direct est le type texte. Le texte est ce qui apparaît souvent sous forme de chaîne de caractères (String) dans d'autres langages, et les constantes sont entourées de guillemets doubles. En R, les constantes textuelles peuvent être entourées de guillemets simples ou doubles, par exemple :
> 'w3codebox' == "w3codebox" [1] TRUE
La définition des variables en R n'est pas aussi rigoureuse que dans les langages de programmation fortement typés, où les règles de syntaxe nécessitent de spécifier un nom et un type de données pour les variables. Chaque fois que vous utilisez l'opérateur d'affectation en R, vous définissez en fait une nouvelle variable :
a = 1 b <- TRUE b = "abc"
Par type d'objet, il s'agit des suivants 6 les types (qui seront détaillés plus tard) :
Le vecteur (Vector) est souvent fourni dans les bibliothèques standard des langages de programmation spécifiques tels que Java, Rust, C#, car il est un outil indispensable pour les opérations mathématiques - le vecteur le plus courant est le vecteur deux dimensions, qui est inévitablement utilisé dans le système de coordonnées plane.
Du point de vue de la structure des données, un vecteur est une liste linéaire, et peut être considéré comme un tableau.
Dans R, le type de vecteur en tant que type existe permet de rendre les opérations sur les vecteurs plus faciles :
> a = c(3, 4) > b = c(5, 0) > a + b [1] 8 4 >
c() est une fonction créant un vecteur.
Ici, la somme de deux vecteurs deux dimensions donne un nouveau vecteur deux dimensions (8, 4Si une opération est effectuée entre un vecteur deux dimensions et un vecteur trois dimensions, cela perdra le sens mathématique, bien que le programme continue de fonctionner, mais il recevra un avertissement.
我建议大家从习惯上杜绝这种情况的出现。
向量中的每一个元素可以通过下标单独取出:
> a = c(10, 20, 30, 40, 50) Les "indices" en langage R ne représentent pas un décalage, mais le nombre, c'est-à-dire que c'est à partir de2] [1] 20
注意:Je recommande de supprimer cette situation de manière habituelle. 1 Chaque élément du vecteur peut être extrait individuellement par son index :
Attention :
Les "indices" en langage R ne représentent pas un décalage, mais le nombre, c'est-à-dire que c'est à partir de1> range(4Début ! 1 à 4 R peut également extraire une partie du vecteur de manière pratique : 1 > a[c( 4 ) # Supprimer le [1] 10 20 30 40 ] # Extraire le1, 3, 5> a[ 1, 3, 5 ) # Supprimer le [1] 10 30 50 ] # Extraire le-1, -5)) # Extraire le 1 > a[c( 5 ) # Supprimer le [1] 20 30 40
Et le
Terme
> c(1.1, 1.2, 1.3) - 0.5 [1Ces trois méthodes de sélection de parties sont les plus courantes.6 0.7 0.8 > a = c(1,2) Le vecteur prend en charge les calculs scalaires : 2 [1] 1 4
] 0.
> a ^
Les fonctions d'opérations mathématiques courantes mentionnées précédemment, telles que sqrt, exp, peuvent également être utilisées pour des opérations scalaire sur le vecteur.
> a = c(1, 3, 5, 2, 4, 6) "Vecteur" en tant que structure de tableau linéaire devrait disposer de fonctions de traitement de tableau linéaire courantes, et R possède effectivement ces fonctions : [1] 1 2 3 4 5 6 Tri vectoriel : [1] 6 4 2 5 3 1 > sort(a) [1] 1 4 2 5 3 6 > rev(a) [1] 1 2 3 4 5 6
> order(a)
> a[order(a)]
La fonction order() retourne un vecteur d'indices après tri du vecteur.
Statistique vectorielle | R dispose d'une fonction statistique complète : |
---|---|
Nom de la fonction | Signification |
sum | Somme |
mean | Moyenne |
var | Variance |
sd | Écart type |
min | Valeur minimale |
max | Valeur maximale |
Gamme de valeurs (vecteur bidimensionnel, valeur maximale et minimale)
Exemple de statistique vectorielle :1> range(5) [1] 15 > sum(1> range(5) [1] 1.581139 > sd(1> range(5) [1] 1 5
:
Génération de vecteur La génération d'un vecteur peut être effectuée avec c()
Pour générer une séquence arithmétique avec des écarts, vous pouvez utiliser la fonction seq ou l'opérateur min:max pour générer une séquence continue. Fonction :
> seq(1, 9, 2) [1] 1 3 5 7 9
Seq peut également générer une séquence arithmétique égale de m à n, il suffit de spécifier m, n et la longueur de la séquence :
> seq(0, 1, length.out=3) [1> rep(0.,5 1.0
Rep signifie repeat (répétition) et peut être utilisé pour générer une séquence de nombres répétés :
> rep(0, 5) [1NA NA NA NA NA
NA et NULL sont souvent utilisés dans les vecteurs. Voici une introduction à ces deux termes et à leurs différences :
NA représente "manquant", NULL représente "inexistant".
NA représente une absence de valeur, comme un marqueur de place, indiquant que la position existe mais pas la valeur.
NULL représente l'absence de données.
Exemple d'explication :
> length(c(NA, NA, NULL)) [1] 2 > c(NA, NA, NULL, NA) [1NA NA NA
Il est évident que NULL n'a aucune signification dans un vecteur.
Les vecteurs logiques sont principalement utilisés pour les opérations logiques sur les vecteurs, par exemple :
> c(1, 2, 3) > 2 [1] FALSE FALSE TRUE
La fonction which est un fonction courante de traitement des vecteurs logiques, utilisée pour filtrer les indices des données nécessaires :
> a = c(1, 2, 3) > b = a > 2 > print(b) [1] FALSE FALSE TRUE > which(b) [1] 3
Par exemple, nous devons filtrer des éléments d'une liste linéaire qui sont supérieurs ou égaux à 60 et inférieur à 70 des données :
10, 40, 78, 64, 53, 62, 69, 70) > print(vector[which(vector >= 60 & vector < 70)]) [1] 64 62 69
Des fonctions similaires incluent all et 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() est utilisé pour vérifier si tous les vecteurs logiques sont TRUE, et any() est utilisé pour vérifier si le vecteur logique contient TRUE.
Les types de données de chaîne ne sont pas complexes en eux-mêmes, ici, nous nous concentrons sur la présentation des fonctions d'opérations sur les chaînes :
> toupper("w3codebox") # Conversion en majuscules [1] "w3codebox" > tolower("w3codebox") # Conversion en minuscules [1] "w3codebox" > nchar("中文", type="bytes") # Longueur en octets [1] 4 > nchar("中文", type="char") # Nombre total de caractères [1] 2 > substr("123456789", 1, 5) # Coupe de la chaîne, à partir de 1 à 5 [1] "12345" > substring("1234567890", 5) # Coupe de la chaîne, à partir de 5 à la fin [1] "567890" > as.numeric("12") # Conversion de la chaîne en nombre [1] 12 > as.character(12.34) # Conversion des nombres en chaînes de caractères [1] "12.34" > strsplit("2019;10;1", ";") # Séparation des chaînes de caractères [[1]] [1] "2019" "10" "1" > gsub("/", "-", "2019/10/1") # Remplacement de la chaîne [1] "2019-10-1"
sur un ordinateur Windows, l'encodage utilisé est le standard GBK, donc un caractère chinois est composé de deux octets, s'il est en UTF-8 sur un ordinateur codé, la longueur en octets d'un caractère chinois unique devrait être 3.
R supporte les expressions régulières au format Perl :
> gsub("[[:alpha:]]+", "$", "Two words") [1] "$ $"
Pour plus de contenu sur les chaînes de caractères, voir :Introduction aux chaînes de caractères R.
R fournit un type de données pour la recherche en algèbre linéaire, cette structure de données est très similaire aux tableaux bidimensionnels d'autres langages, mais R offre un soutien de calcul matriciel au niveau du langage.
Voyons d'abord la génération de la matrice :
> vector=c(1, 2, 3, 4, 5, 6) > matrix(vector, 2, 3) [1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6
Le contenu initial de la matrice est transmis par un vecteur, ce qui exprime le nombre de lignes et de colonnes de la matrice.
Les valeurs d'un vecteur sont remplies colonne par colonne dans la matrice. Si vous souhaitez remplir par ligne, vous devez spécifier l'attribut byrow :
> matrix(vector, 2, 3, byrow=TRUE) [1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6
Chaque valeur d'une matrice peut être accédée directement :
> m1 = matrix(vector, 2, 3, byrow=TRUE) > m1[1,1] # Le 1 Ligne Le 1 Colonne [1] 1 > m1[1,3] # Le 1 Ligne Le 3 Colonne [1] 3
Dans R, chaque colonne et chaque ligne d'une matrice peut être nommée, ce processus est réalisé en lots par une vectorisation de chaînes de caractères :
> 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
Les opérations arithmétiques des matrices sont similaires à celles des vecteurs, elles peuvent être faites avec des scalaires ou des matrices de même taille en correspondance des positions.
Opérations d'arithmétique des matrices :
> m1 = matrix(c(1, 2), 1, 2) > m2 = matrix(c(3, 4), 2, 1) > m1 %*% m2 [1] [1,] 11
Matrice inversée :
> A = matrix(c(1, 3, 2, 4), 2, 2) > solve(A) [1] [,2] [1,] -2.0 1.0 [2,] 1.5 -0.5
La fonction apply() peut traiter chaque ligne ou chaque colonne d'une matrice comme un vecteur :
> (A = matrix(c(1, 3, 2, 4), 2, 2)) [1] [,2] [1,] 1 2 [2,] 3 4 > apply(A, 1, sum) # Deuxième paramètre : 1 Opérations par ligne, en utilisant la fonction sum() : [1] 3 7 > apply(A, 2, sum) # Deuxième paramètre : 2 Opérations par colonne [1] 4 6
Pour plus de contenu sur les matrices, voir :Matrices R.