Search code examples
regexrapplysapply

How do I count the number of words in a text (string)?


I have this string vector (for example):

str <- c("this is a string current trey",
    "feather rtttt",
    "tusla",
    "laq")

To count the number of words in this vector I used this (as given here Count the number of words in a string in R?, which is a possible duplicate but with another issue)

No_words <- sapply(gregexpr("\\W+", str), length) + 1

but it returns

6 2 2 2

String has only 1 element in last two places (i.e. "tusla" and "laq")

so it should return

6 2 1 1

How do I get around this problem?


Solution

  • You can try

    sapply(gregexpr("\\S+", x), length)
    ## [1] 6 2 1 1
    

    Or as suggested in comments you can try

    sapply(strsplit(x, "\\s+"), length)
    ## [1] 6 2 1 1