提取字符串的第一个(或最后一个)n个字符

时间:2013-04-09 08:43:51

标签: string r

我想提取字符串的第一个(或最后一个) n 字符。这相当于Excel的LEFT()RIGHT()。一个小例子:

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

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

b
# [1] "left"

我该怎么办?

5 个答案:

答案 0 :(得分:65)

请参阅?substr

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

答案 1 :(得分:38)

stringr包提供了str_sub函数,它比substr更容易使用,特别是如果你想提取字符串的正确部分:

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

答案 2 :(得分:18)

您可以从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()。 希望你会发现它很有用

答案 3 :(得分:2)

如果您来自Microsoft Excel,则以下功能将类似于ORDER BYLEFT()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)
  }

答案 4 :(得分:1)

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

的位置