Je suis en train d'apprendre les bases de R et de messages à traverser un exemple dans lequel l'utilisateur charge un fichier .csv contenant les poids des souris nourries une commande Il procède à faire deux vecteurs Je suis confus quant à l'objectif que la fonction irrégulière sert ici. IV a vu la fonction irréaliste utilisée avant le graphique et je suis confus quant à la différence qu'il fait?
p>
3 Réponses :
Eh bien, cela dépend simplement de ce que vous voulez réaliser. Avant le olisateur (), vous finirez avec données.frame (ou plus spécifique un tibble dans cet exemple en raison de la fonctionnalité dplyr appliquée aux données). Lors de la libération de la colonne unique, vous vous retrouverez avec un vecteur numérique atomique (nommé), ce qui se comporte totalement différent dans certaines situations (le dernier RBind ci-dessous est un exemple).
library(tidyverse) mice <- structure(list(Diet=c("chow","chow","chow","chow","chow", "chow","chow","chow","chow","chow","chow","chow","hf", "hf","hf","hf","hf","hf","hf","hf","hf","hf","hf","hf" ),Bodyweight=c(21.51,28.14,24.04,23.45,23.68,19.79,28.4, 20.98,22.51,20.1,26.91,26.25,25.71,26.37,22.8,25.34, 24.97,28.14,29.58,30.92,34.02,21.9,31.53,20.73)),class=c("spec_tbl_df", "tbl_df","tbl","data.frame"),row.names=c(NA,-24L),spec=structure(list( cols=list(Diet=structure(list(),class=c("collector_character", "collector")),Bodyweight=structure(list(),class=c("collector_double", "collector"))),default=structure(list(),class=c("collector_guess", "collector")),skip=1),class="col_spec")) bodyweight <- mice %>% filter(Diet == "chow") %>% select(Bodyweight) class(bodyweight) #> [1] "spec_tbl_df" "tbl_df" "tbl" "data.frame" bodyweight #> # A tibble: 12 x 1 #> Bodyweight #> <dbl> #> 1 21.5 #> 2 28.1 #> 3 24.0 #> 4 23.4 #> 5 23.7 #> 6 19.8 #> 7 28.4 #> 8 21.0 #> 9 22.5 #> 10 20.1 #> 11 26.9 #> 12 26.2 bodyweight_unl <- mice %>% filter(Diet == "chow") %>% select(Bodyweight) %>% unlist class(bodyweight_unl) #> [1] "numeric" bodyweight_unl #> Bodyweight1 Bodyweight2 Bodyweight3 Bodyweight4 Bodyweight5 Bodyweight6 #> 21.51 28.14 24.04 23.45 23.68 19.79 #> Bodyweight7 Bodyweight8 Bodyweight9 Bodyweight10 Bodyweight11 Bodyweight12 #> 28.40 20.98 22.51 20.10 26.91 26.25 rbind(bodyweight, 1:12) rbind(bodyweight_unl, 1:12)
Fonctions DLYR, tels que Dans l'exemple donné, chaque instruction sélectionne une seule colonne, renvoyée sous forme de 1- colonne tibble. Un Tibble de 1 colonne est une liste avec un élément, dans ce cas le vecteur des poids corporels. Cependant, de nombreuses fonctions ne s'attendent pas à un tibble (ou à des données) de 1 colonne, mais veulent un vecteur. En utilisant la voie idiomatique dans dplyr serait de tuyer considère cet exemple simple pour la différence p> Filtre () CODE> et
SELECT () CODE>, retour TIBBLES (une variante sur les données.Frames). Les cadres de données et les tibbles sont un type de liste spécial, où chaque élément est un vecteur de la même longueur, mais pas nécessairement le même type.
Unlist () code>, nous écrasons la structure sur un seul vecteur. Cela serait vrai si vous avez sélectionné une colonne unique ou plusieurs colonnes. P>
tirez (poids corporel) code>, par opposition à l'utilisation de
Unlist () code>. p>
Je suis tout à fait d'accord avec la recommandation pull () code>. Utilisation de
Unlist () Code> Dans ce cas, ne semble tout simplement pas très obligatoire.
Le but de Voir d'autres explications dans les commentaires ci-dessous. P> irréaliste code> est pour aplatir une liste de vecteurs dans un seul vecteur. em> cela vient de R pour la science des données . Cela vaut certainement la peine de lire.
library(tidyverse)
head(data)
#> Diet Bodyweight
#> 1 chow 21.51
#> 2 chow 28.14
#> 3 chow 24.04
#> 4 chow 23.45
#> 5 chow 23.68
#> 6 chow 19.79
# without unlist you get a data.frame
dplyr::filter(data, Diet == 'chow') %>% select(Bodyweight) %>% class()
#> [1] "data.frame"
# by unlisting you get a named vector with the names taken from the selected data
dplyr::filter(data, Diet == 'chow') %>% select(Bodyweight) %>% unlist()
#> Bodyweight1 Bodyweight2 Bodyweight3 Bodyweight4 Bodyweight5 Bodyweight6
#> 21.51 28.14 24.04 23.45 23.68 19.79
#> Bodyweight7 Bodyweight8 Bodyweight9 Bodyweight10 Bodyweight11 Bodyweight12
#> 28.40 20.98 22.51 20.10 26.91 26.25
# If you set use.names=F you get a vector with the data you selected
dplyr::filter(data, Diet == 'chow') %>% select(Bodyweight) %>% unlist(use.names = F)
#> [1] 21.51 28.14 24.04 23.45 23.68 19.79 28.40 20.98 22.51 20.10 26.91 26.25