kzen.dev
  • Questions
  • Tags
  • Utilisateurs
Notifications
Récompenses
Inscription
Une fois inscrit, vous serez informé des réponses et des commentaires à vos questions.
Connectez-vous
Si vous avez déjà un compte, connectez-vous pour vérifier les nouvelles notifications.
Il y aura des récompenses pour les questions, réponses et commentaires ajoutés.
Détails
Source
Editer
Jeff Allen
Jeff Allen
Question

Créer un data.frame vide

J&#8217essaie d&#8217initialiser un data.frame sans aucune ligne. En fait, je veux spécifier les types de données pour chaque colonne et les nommer, mais aucune ligne n'est créée à la suite de cette opération.

Le mieux que j'ai pu faire jusqu'à présent est quelque chose du genre :

df <- data.frame(Date=as.Date("01/01/2000", format="%m/%d/%Y"), 
                 File="", User="", stringsAsFactors=FALSE)
df <- df[-1,]

Ce qui crée un data.frame avec une seule ligne contenant tous les types de données et les noms de colonnes que je voulais, mais crée également une ligne inutile qui doit ensuite être supprimée.

Existe-t-il une meilleure façon de procéder ?

446 2012-05-21T16:35:18+00:00 3
 Jaap
Jaap
Question modifiée 29 août 2018 в 10:31
Programmation
r
dataframe
r-faq
Cette question a 1 réponse en anglais, pour les lire connectez-vous à votre compte.
Solution / Réponse
 digEmAll
digEmAll
21 mai 2012 в 4:44
2012-05-21T16:44:51+00:00
Détails
Source
Editer
#16241497

Il suffit de l'initialiser avec des vecteurs vides :

df <- data.frame(Date=as.Date(character()),
                 File=character(), 
                 User=character(), 
                 stringsAsFactors=FALSE) 

Voici un autre exemple avec différents types de colonnes :

df <- data.frame(Doubles=double(),
                 Ints=integer(),
                 Factors=factor(),
                 Logicals=logical(),
                 Characters=character(),
                 stringsAsFactors=FALSE)

str(df)
> str(df)
'data.frame':   0 obs. of  5 variables:
 $ Doubles   : num 
 $ Ints      : int 
 $ Factors   : Factor w/ 0 levels: 
 $ Logicals  : logi 
 $ Characters: chr 

N.B. :

Initialiser un data.frame avec une colonne vide du mauvais type n'empêche pas les ajouts ultérieurs de lignes ayant des colonnes de types différents.
Cette méthode est juste un peu plus sécuritaire dans le sens où vous aurez les types de colonnes corrects dès le début, donc si votre code repose sur une vérification du type de colonne, il fonctionnera même avec un data.frame avec zéro ligne.

 digEmAll
digEmAll
Réponse modifiée 11 juin 2015 в 5:49
604
0
 zeleniy
zeleniy
12 novembre 2013 в 1:59
2013-11-12T13:59:54+00:00
Détails
Source
Editer
#16241498

Vous pouvez le faire sans spécifier les types de colonnes

df = data.frame(matrix(vector(), 0, 3,
                dimnames=list(c(), c("Date", "File", "User"))),
                stringsAsFactors=F)
 MERose
MERose
Réponse modifiée 10 octobre 2015 в 12:03
77
0
 Rentrop
Rentrop
28 octobre 2014 в 5:30
2014-10-28T17:30:00+00:00
Détails
Source
Editer
#16241499

Vous pourriez utiliser read.table avec une chaîne vide pour l'entrée text comme suit :

colClasses = c("Date", "character", "character")
col.names = c("Date", "File", "User")

df <- read.table(text = "",
                 colClasses = colClasses,
                 col.names = col.names)

Vous pouvez aussi spécifier les noms des colonnes sous forme de chaîne :

df <- read.csv(text="Date,File,User", colClasses = colClasses)

Merci à Richard Scriven pour l'amélioration

 Rentrop
Rentrop
Réponse modifiée 28 septembre 2016 в 9:22
51
0
Ajouter une question
Catégories
Toutes
Technologie
Culture / Loisirs
Vie / Arts
Science
Professionnel
Entreprises
Utilisateurs
Tous
Nouveau
Populaire
1
Ilya Smirnov
Enregistré il y a 6 jours
2
Денис Васьков
Enregistré il y a 1 semaine
3
Dima Patrushev
Enregistré il y a 1 semaine
4
sirojidddin otaboyev
Enregistré il y a 2 semaines
5
Елена Гайдамамакинат
Enregistré il y a 2 semaines
BG
DA
DE
EL
ES
FI
FR
ID
IT
JA
KO
LV
NL
NO
PL
PT
RO
RU
SK
TR
ZH
© kzen.dev 2023
Source
stackoverflow.com
sous licence cc by-sa 3.0 avec l'attribution