J'ai un ensemble de données contenant des colonnes avec divers éléments et leur erreur
(par exemple Pb, Pb.error, Cu, Cu.error, Zn, Zn.error, Fe, Fe.error).
comment puis-je sélectionner plusieurs colonnes par leur nom (je veux sélectionner Pb, Pb.error, Zn, Zn.error par exemple)?
J'ai essayé: p >
subset(myData, select = c("Pb","Pb.Error","Zn","Zn.Error"))
qui fonctionne bien pour un élément et son erreur (je pourrais sélectionner Pb et Pb error).
mais cela ne fonctionne pas pour plusieurs éléments et leurs erreurs:
subset(myData, select = (grep("Pb", dataTitle)|grep("Zn", dataTitle)))
le code ci-dessus imprime tous les éléments que j'ai (c'est-à-dire qu'il n'a réussi à sélectionner aucune des colonnes spécifiques). Je suis très confus et je ne connais pas la raison.
J'ai aussi essayé
subset(myData, select = (grep("Pb", dataTitle)))
Cela fonctionne parfaitement pour moi, mais je me demandais si je pourrait le rendre plus simple, car je pense que "Pb" et "Pb.error" pourraient être sélectionnés en même temps.
3 Réponses :
Je viens de recevoir la réponse 1 min après avoir posé cette question. C'est facile si j'utilise simplement "Pb | Zn" dans la fonction grep
subset(myData, select(grep("Pb|Zn", dataTitle)))
Cela fonctionne parfaitement pour moi.
Cela fonctionne également, sauf si vous essayez spécifiquement d'appeler les colonnes d'erreur par leur association à leurs colonnes de données respectives:
myData[,c("Pb","Pb.Error","Zn","Zn.Error")]
Oui, cela fonctionne bien, mais il y a en fait environ 10 éléments différents à citer, alors j'essayais d'éviter de les citer directement. Mais merci pour votre réponse! c'est plus soigné que le mien
Voici une autre façon avec quelques restrictions supplémentaires sur l'expression régulière:
df <- tibble(
Pb = NA, Pb.error = NA, Cu = NA, Cu.error = NA, Zn = NA, Zn.error = NA, Fe = NA, Fe.error = NA
)
df[, grepl("^(Pb|Zn).*$", names(df))]