How to extract a vector element without using the index

Viewed 177

I have this vector containing names of different countries:

Contries<-c("United States", "India", "Brazil", "France", "Mali", "Australia")

I want to extract only "France", then I want to extract all country names except the France, without using the index of France, but the name of France itself.

I tried these but they don't work.

Contries["France"]
Contries[!"France"]

Finally, I want to extract the names of all countries except France and Mali

Contries[!c("France","Mali")]

How can I do that?

4 Answers

Contries[!Contries %in% c("France", "Mali")]
#> [1] "United States" "India"         "Brazil"        "Australia"

Created on 2021-07-04 by the reprex package (v2.0.0)

Contries<-c("United States", "India", "Brazil", "France", "Mali", "Australia")

Include

Contries[Contries == "France"]

Exclude single element

Contries[Contries != "France"]

Exclude multiple elements

Contries[!Contries %in% c("France, Mali")]
Contries[Contries %in% setdiff(Contries, c("France", "Mali"))]

You can try

> Contries[-match(c("France", "Mali"), Contries)]
[1] "United States" "India"         "Brazil"        "Australia"

Although a little more code, you can also do this with dplyr.

Include

library(dplyr)
country <-
  as.data.frame(Contries) %>% 
  dplyr::filter(Contries == "France") %>% 
  unlist() %>% 
  as.character()

Exclude single element

country <-
  as.data.frame(Contries) %>% 
  dplyr::filter(Contries != "France") %>% 
  unlist() %>% 
  as.character()

Exclude multiple elements

country <-
   as.data.frame(Contries) %>% 
   dplyr::filter(!Contries %in% c("France", "Mali")) %>% 
   unlist() %>% 
   as.character()
Related