web-dev-qa-db-fra.com

comment supprimer plusieurs colonnes dans r dataframe?

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
15
Ahmed Elmahy

Sous-ensemble de base:

album2 <- album2[, -5] #delete column 5
album2 <- album2[, -c(5:7)] # delete columns 5 through 7
34
doctorG

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
17
Andrew Haynes

Si vous souhaitez uniquement supprimer les colonnes 5 et 7 mais pas 6, essayez:

album2 <- album2[,-c(5,7)] #deletes columns 5 and 7
4
Kara

@ 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

2
ExploreR