J'essaie de supprimer des colonnes dans un cadre de données. Je veux savoir pourquoi cela a fonctionné pour une seule colonne mais pas avec des colonnes multiples, par exemple. cela marche
album2[,5]<- NULL
ça ne marche pas
album2[,c(5:7)]<- NULL
Error in `[<-.data.frame`(`*tmp*`, , 5:7, value = NULL) :
replacement has 0 items, need 600
Cela ne fonctionne pas non plus
for (i in 5: (length(album2)-1)){
album2[,i]<- NULL
}
Error in `[<-.data.frame`(`*tmp*`, , i, value = NULL) :
new columns would leave holes after existing columns
Sous-ensemble de base:
album2 <- album2[, -5] #delete column 5
album2 <- album2[, -c(5:7)] # delete columns 5 through 7
L'ajout de la réponse étant le résultat le plus important lors de la recherche de "supprimer plusieurs colonnes dans r":
La version générale de la suppression de colonne unique, par exemple df$column1 <- NULL
, Consiste à utiliser list(NULL)
:
df[ ,c('column1', 'column2')] <- list(NULL)
Cela fonctionne également pour l'index de position:
df[ ,c(1,2)] <- list(NULL)
Il s'agit d'une baisse plus générale et, comme certains commentaires l'ont mentionné, la suppression par indices n'est pas recommandée. De plus, le sous-ensemble négatif habituel (utilisé dans d'autres réponses) ne fonctionne pas pour les colonnes données sous forme de chaînes:
> iris[ ,-c("Species")]
Error in -"Species" : invalid argument to unary operator
Si vous souhaitez uniquement supprimer les colonnes 5 et 7 mais pas 6, essayez:
album2 <- album2[,-c(5,7)] #deletes columns 5 and 7
@ Ahmed Elmahy doit suivre l’approche suivante lorsque vous souhaitez supprimer un vecteur de noms de colonnes de votre cadre de données:
test_df <- data.frame(col1 = c("a", "b", "c", "d", "e"), col2 = seq(1, 5), col3 = rep(3, 5))
rm_col <- c("col2")
test_df[, !(colnames(test_df) %in% rm_col), drop = FALSE]
Tout le meilleur, Explorer