Je travaille sur un programme et maintenant je cherche un moyen de vérifier les noms des colonnes lors du téléchargement d'un fichier. Si les noms ne sont pas uniques, une erreur doit être écrite. Y a-t-il un moyen de faire cela?
Par exemple, si j'ai ces df:
library(dplyr) test <- rename(test, Number = a) test <- rename(test, Number = b) > test Number Number c 1 10 1 Peter 2 20 2 Ann 3 30 3 Mike
avec:
> a <- c(10, 20, 30)
> b <- c(1, 2, 3)
> c <- c("Peter", "Ann", "Mike")
> test <- data.frame(a, b, c)
S'il s'agissait d'un fichier, comment pourrais-je vérifier si les noms de colonnes sont uniques. Bien serait comme résultat seulement vrai ou faux!
Merci!
3 Réponses :
Vérifiez les fonctions unique () et colnames () . Par exemple:
are.unique.colnames <- function(array){
return(length(unique(colnames(array))) == dim(array)[2])
}
est une fonction basée sur le nombre de noms de colonnes différents (une métadonnée simple et utile de toute structure de type tableau)
Nous pouvons utiliser:
sum(duplicated(names(test)))
Sur les données de OP:
length(which(duplicated(names(test))==TRUE)) [1] 1
Ce qui précède peut être simplifié en utilisant ce qui suit comme suggéré par @sindri_baldur et @akrun
anyDuplicated(names(test))
Si vous souhaitez savoir combien sont dupliqués:
any(duplicated(names(test))) [1] TRUE
Cela peut également être simplifié en ( comme suggéré par @sindri_baldur:
any(duplicated(names(df))) #tested with df as iris [1] FALSE
length (qui (duplicated (names (test)) == TRUE)) peut être simplifié en sum (duplicated (names (test))) et any ( dupliqué (noms (test))) peut être simplifié en anyDuplicated (noms (test))
Je ne sais pas pourquoi j'ai abandonné sum mais maintenant que j'y pense, cela a du sens. Merci!
Il existe également anyDuplicated
Modifié pour ajouter toutes les options. Merci!
test.unique(test.frame)
essayez ceci:
sum (duplicated (colnames (test)))> 0length (unique (colnames (test)) == length (colnames (test))