如何从R中的字符串中获得最后n个字符? 有没有像SQL的RIGHT这样的函数?
当前回答
对于那些来自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"
其他回答
对于那些来自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"
以防万一,如果需要选择一系列字符:
# For example, to get the date part from the string
substrRightRange <- function(x, m, n){substr(x, nchar(x)-m+1, nchar(x)-m+n)}
value <- "REGNDATE:20170526RN"
substrRightRange(value, 10, 8)
[1] "20170526"
之前有人使用了类似的解决方案,但我发现下面的想法更容易:
> 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))
这将产生所需的最后一个字符。
一个简单的基于R的解决方案,使用substring()函数(谁知道这个函数甚至存在?)
RIGHT = function(x,n){
substring(x,nchar(x)-n+1)
}
这基本上利用了substr()在下面的优势,但其默认结束值为1,000,000。
例子:
> RIGHT('Hello World!',2)
[1] "d!"
> RIGHT('Hello World!',8)
[1] "o World!"
str = 'This is an example'
n = 7
result = substr(str,(nchar(str)+1)-n,nchar(str))
print(result)
> [1] "example"
>
推荐文章
- 如何在Typescript中解析JSON字符串
- 使用pandoc从Markdown转换为PDF时设置空白大小
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- 用javascript检查输入字符串中是否包含数字
- ggplot2折线图给出“geom_path:每组只包含一个观测值。你需要调整群体审美吗?”
- Java:检查enum是否包含给定的字符串?
- 用PHP删除字符串的前4个字符
- 如何从字符串的开始或结束删除所有空白?
- 字符串到JS中的对象
- 为什么Python的原始字符串不能以一个反斜杠结尾?
- 我如何读整个文件到性病::字符串在c++ ?
- 从以特定字符开头的字符串中获取子字符串
- 如何用前导零格式化Java字符串?
- Android Split字符串