R의 문자열에서 마지막 n자 추출
어떻게 하면 R의 문자열에서 마지막 n자를 얻을 수 있습니까?SQL's RIGHT와 같은 기능이 있습니까?
기본 R에 대해 아무것도 모르지만, 이것을 하기 위한 함수를 만드는 것은 간단합니다.substr그리고.nchar:
x <- "some text in a string"
substrRight <- function(x, n){
substr(x, nchar(x)-n+1, nchar(x))
}
substrRight(x, 6)
[1] "string"
substrRight(x, 8)
[1] "a string"
이것은 @mdsumner가 지적하듯이 벡터화됩니다.고려 사항:
x <- c("some text in a string", "I really need to learn how to count")
substrRight(x, 6)
[1] "string" " count"
만약 당신이 괜찮다면 그것을 사용하세요.stringr패키지,str_sub음수를 사용하여 거꾸로 셀 수 있으므로 편리합니다.
x <- "some text in a string"
str_sub(x,-6,-1)
[1] "string"
또는 Max가 이 답변에 대한 코멘트에서 지적했듯이,
str_sub(x, start= -6)
[1] "string"
사용하다stri_sub에서 기능.stringi꾸러미끝에서 부분 문자열을 가져오려면 음수를 사용합니다.아래의 예를 참조하십시오.
stri_sub("abcde",1,3)
[1] "abc"
stri_sub("abcde",1,1)
[1] "a"
stri_sub("abcde",-3,-1)
[1] "cde"
github: https://github.com/Rexamine/stringi 에서 이 패키지를 설치할 수 있습니다.
현재 CRAN에서 사용할 수 있습니다. 간단히 입력하십시오.
install.packages("stringi")
이 패키지를 설치합니다.
str = 'This is an example'
n = 7
result = substr(str,(nchar(str)+1)-n,nchar(str))
print(result)
> [1] "example"
>
또 다른 합리적으로 간단한 방법은 정규 표현을 사용하는 것입니다.sub:
sub('.*(?=.$)', '', string, perl=T)
그래서, "모든 것을 제거하고 한 캐릭터를."끝에서 더 많은 문자를 가져오려면 미리 보기 어설션에 점을 추가합니다.
sub('.*(?=.{2}$)', '', string, perl=T)
어디에.{2}수단..또는 "어떤 두 문자" 즉, "모든 것을 제거하고 두 문자가 뒤따르는 것"을 의미합니다.
sub('.*(?=.{3}$)', '', string, perl=T)
3자 등에 대하여변수를 사용하여 잡을 문자 수를 설정할 수 있지만 다음과 같이 설정해야 합니다.paste정규식 문자열에 대한 변수 값:
n = 3
sub(paste('.+(?=.{', n, '})', sep=''), '', string, perl=T)
업데이트: mdsumner가 언급한 것처럼, 서브스트가 있기 때문에 원래 코드는 이미 벡터화되었습니다.좀 더 조심했어야 했어요.
그리고 만약 당신이 벡터화된 버전을 원한다면 (앤드리의 코드를 기반으로)
substrRight <- function(x, n){
sapply(x, function(xx)
substr(xx, (nchar(xx)-n+1), nchar(xx))
)
}
> substrRight(c("12345","ABCDE"),2)
12345 ABCDE
"45" "DE"
내가 변했다는 것을 기억하세요.(nchar(x)-n)로.(nchar(x)-n+1)갖기 위해n성격.
다음을 사용하는 간단한 기본 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!"
사용해 보십시오.
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)
사용합니다substr역시, 하지만 다른 방식으로.저는 "밥 주세요"의 마지막 6자를 추출하고 싶습니다.다음은 단계입니다.
문자 분할
splits <- strsplit("Give me your food.", split = "")
마지막 6자를 추출
tail(splits[[1]], n=6)
출력:
[1] " " "f" "o" "o" "d" "."
각 캐릭터는 다음을 통해 액세스할 수 있습니다.splits[[1]][x]여기서 x는 1 ~ 6입니다.
이전의 누군가가 저와 비슷한 솔루션을 사용했지만, 저는 아래와 같이 생각하는 것이 더 쉽다는 것을 알게 되었습니다.
> 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))
원하는 대로 마지막 문자를 가져옵니다.
또는 Sheets에서 Excel 및 Google Sheets와 같은 을 볼 수 .LEFT(),RIGHT(),그리고.MID()나는 forstringr로 알려진 패키지를 만들었고 그것의 개발 버전은 현재 Github에 있습니다.
if(!require("devtools")){
install.packages("devtools")
}
devtools::install_github("gbganalyst/forstringr")
library(forstringr)
그자리의
str_left()n개의 합니다.그자리의
str_right()를 세고 의 문자를 합니다.그자리의
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"
문자열의 마지막 문자를 얻기 위해 다음 코드를 사용했습니다.
substr(output, nchar(stringOfInterest), nchar(stringOfInterest))
nchar(stringOf)로 재생할 수 있습니다.관심) 마지막 몇 개의 문자를 가져오는 방법을 확인합니다.
@Andrie 솔루션을 약간 수정하면 다음과 같은 보완 효과를 얻을 수 있습니다.
substrR <- function(x, n) {
if(n > 0) substr(x, (nchar(x)-n+1), nchar(x)) else substr(x, 1, (nchar(x)+n))
}
x <- "moSvmC20F.5.rda"
substrR(x,-4)
[1] "moSvmC20F.5"
그게 바로 제가 찾던 겁니다.그리고 왼쪽으로 초대합니다.
substrL <- function(x, n){
if(n > 0) substr(x, 1, n) else substr(x, -n+1, nchar(x))
}
substrL(substrR(x,-4),-2)
[1] "SvmC20F.5"
다양한 문자를 선택해야 하는 경우:
# 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"
언급URL : https://stackoverflow.com/questions/7963898/extracting-the-last-n-characters-from-a-string-in-r
'programing' 카테고리의 다른 글
| %w(array)는 무엇을 의미합니까? (0) | 2023.05.17 |
|---|---|
| jQuery - 숨겨진 입력 필드에서 값 변경을 탐지합니다. (0) | 2023.05.17 |
| jQuery 먼저를 제외한 모든 항목 선택 (0) | 2023.05.17 |
| C# 점이 있는 단어와 일치하는 정규식 (0) | 2023.05.17 |
| jQuery .html() vs.append() (0) | 2023.05.17 |