如何从R中的字符串中获得最后n个字符? 有没有像SQL的RIGHT这样的函数?


当前回答

我使用下面的代码来获取字符串的最后一个字符。

    substr(output, nchar(stringOfInterest), nchar(stringOfInterest))

您可以使用nchar(stringOfInterest)来计算如何获取最后几个字符。

其他回答

对于那些来自Microsoft Excel或谷歌Sheets的人来说,你应该见过LEFT(), RIGHT()和MID()这样的函数。我已经创建了一个名为forstringr的包,其开发版本目前在Github上。

if(!require("devtools")){
 install.packages("devtools")
}

devtools::install_github("gbganalyst/forstringr")

library(forstringr)

str_left():从左边开始计数,然后提取n个字符 str_right()-从右边开始计数,然后提取n个字符 str_mid()-从中间提取字符

例子:


x <- "some text in a string"

str_left(x, 4)

[1] "some"

str_right(x, 6)

[1] "string"

str_mid(x, 6, 4)

[1] "text"

之前有人使用了类似的解决方案,但我发现下面的想法更容易:

> text<-"some text in a string" # we want to have only the last word "string" with 6 letter
> n<-5 #as the last character will be counted with nchar(), here we discount 1
> substr(x=text,start=nchar(text)-n,stop=nchar(text))

这将产生所需的最后一个字符。

如果你不介意使用stringr包,str_sub很方便,因为你可以使用负号来向后计数:

x <- "some text in a string"
str_sub(x,-6,-1)
[1] "string"

或者,正如Max在对这个答案的评论中指出的那样,

str_sub(x, start= -6)
[1] "string"

试试这个:

x <- "some text in a string"
n <- 5
substr(x, nchar(x)-n, nchar(x))

它应该给出:

[1] "string"

substr的另一种替代方法是将字符串拆分为单个字符的列表并处理:

N <- 2
sapply(strsplit(x, ""), function(x, n) paste(tail(x, n), collapse = ""), N)