Extract the first (or last) n characters of a string


83

I want to extract the first (or last) n characters of a string. This would be the equivalent to Excel's LEFT() and RIGHT(). A small example:

# create a string
a <- paste('left', 'right', sep = '')
a
# [1] "leftright"

I would like to produce b, a string which is equal to the first 4 letters of a:

b
# [1] "left"

What should I do?

जवाबों:


89

See ?substr

R> substr(a, 1, 4)
[1] "left"

I recommend having a look at @juba's answer below. He provides a stringr solution.
Jochem

57

The stringr package provides the str_sub function, which is a bit easier to use than substr, especially if you want to extract right portions of your string :

R> str_sub("leftright",1,4)
[1] "left"
R> str_sub("leftright",-5,-1)
[1] "right"

3
Thank for your hint, juba; by the way I think I will accept rcs' answer because it deals with base R :)
Lisa Ann

4
Knowing base R is good, but if it comes to string functions, your life will be easier if you only use the stringr as mentioned by @juba
Dieter Menne

1
I agree with Dieter. Learning stringr will save you almost as much aggravation as lubridate.
Andrew Brēza

25

You can easily obtain Right() and Left() functions starting from the Rbase package:

  • right function

    right = function (string, char) {
        substr(string,nchar(string)-(char-1),nchar(string))
    }
    
  • left function

    left = function (string,char) {
        substr(string,1,char)
    }
    

you can use those two custom-functions exactly as left() and right() in excel. Hope you will find it useful


6

इसे सरल बनाएं और R मूल कार्यों का उपयोग करें:

# To get the LEFT part:
> substr(a, 1, 4)
[1] "left"
> 
# To get the MIDDLE part:
> substr(a, 3, 7)
[1] "ftrig"
> 
# To get the RIGHT part:
> substr(a, 5, 10)
[1] "right"

substr()समारोह तुम कहाँ शुरू करने और रोकने के लिए कहता हैsubstr(x, start, stop)


2

आप माइक्रोसॉफ्ट एक्सेल से आ रहे हैं, तो निम्न कार्यों के समान होगा LEFT(), RIGHT()और MID()काम करता है।


# This counts from the left and then extract n characters

str_left <- function(string, n) {
  substr(string, 1, n)
}



# This counts from the right and then extract n characters

str_right <- function(string, n) {
  substr(string, nchar(string) - (n - 1), nchar(string))
}


# This extract characters from the middle

str_mid <- function(string, from = 2, to = 5){
  
  substr(string, from, to)
  }

उदाहरण:

x <- "some text in a string"
str_left(x, 4)
[1] "some"

str_right(x, 6)
[1] "string"

str_mid(x, 6, 9)
[1] "text"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.