I have a string like this:

years<-c("20 years old", "1 years old")

I would like to grep only the numeric number from this vector. The expected output is a vector:

c(20, 1)

How do I go about doing this?

Login

0 votes

To extract numbers from **vectors **of strings, you can use the **gsub **function from the base package as follows:

years<-c("20 years old", "1 years old")

# to find a set of numbers in the start and capture them

as.numeric(gsub("([0-9]+).*$", "\\1", years))

[1] 20 1

OR

# pattern is to just remove _years_old

as.numeric(gsub(" years old", "", years))

[1] 20 1

You can also use the **strsplit **function as follows:

#to split by space, get the element in first index

as.numeric(sapply(strsplit(years, " "), "[[", 1))

[1] 20 1