101

我想提取字符串的第一个(或最后一个)n 个字符。这将等效于 ExcelLEFT()RIGHT(). 一个小例子:

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

我想产生b一个等于前 4 个字母的字符串a

b
# [1] "left"

我该怎么办?

4

5 回答 5

102

?substr

R> substr(a, 1, 4)
[1] "left"
于 2013-04-09T08:46:49.830 回答
72

stringr包提供的str_sub功能比 更容易使用substr,特别是如果您想提取字符串的正确部分:

R> str_sub("leftright",1,4)
[1] "left"
R> str_sub("leftright",-5,-1)
[1] "right"
于 2013-04-09T08:48:46.570 回答
27

您可以从 Rbase 包开始轻松获取 Right() 和 Left() 函数:

  • 正确的功能

    right = function (string, char) {
        substr(string,nchar(string)-(char-1),nchar(string))
    }
    
  • 左函数

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

您可以将这两个自定义函数与 Excel 中的 left() 和 right() 完全相同。希望你会发现它有用

于 2014-10-27T15:32:41.803 回答
7

使其简单并使用 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)

于 2017-02-10T00:05:49.680 回答
6

如果您来自 Microsoft Excel,则以下函数将类似于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"

于 2020-08-27T11:47:45.047 回答