Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

R: Deleting elements from a vector based on element length

How can I delete elements from a vector of strings depending on the number of characters or length of the strings?

df <- c("asdf","fweafewwf","af","","","aewfawefwef","awefWEfawefawef")
> df
[1] "asdf"            "fweafewwf"       "af"              ""                ""                "aewfawefwef"     "awefWEfawefawef"

For example, I may want to delete all elements of df with a length smaller than 5, so the output would be:

> df
[1]"fweafewwf"        "aewfawefwef"     "awefWEfawefawef"

Thanks!

like image 903
so13eit Avatar asked Jan 23 '26 02:01

so13eit


2 Answers

Just use nchar:

> df[nchar(df) > 5]
[1] "fweafewwf"       "aewfawefwef"     "awefWEfawefawef"
like image 162
A5C1D2H2I1M1N2O1R2T1 Avatar answered Jan 24 '26 16:01

A5C1D2H2I1M1N2O1R2T1


Since nchar works weird with NA's:

nchar(NA)
## [1] 2

I recommend to use stri_length function from stringi package

require(stringi)
df[stri_length(df)>5]
like image 43
bartektartanus Avatar answered Jan 24 '26 16:01

bartektartanus



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!