Витягніть перший (або останній) n символів рядка


83

Я хочу витягти перший (або останній) n символів рядка. Це було б еквівалентно Excel LEFT()та RIGHT(). Невеликий приклад:

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

Я хотів би створити bрядок, який дорівнює першим 4 буквам a:

b
# [1] "left"

Що я повинен зробити?

Відповіді:


89

Подивитися ?substr

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

Рекомендую поглянути на відповідь @ juba нижче. Він пропонує stringrрішення.
Jochem

57

stringrПакет надає str_subфункцію, яка трохи простіше у використанні , ніж substr, особливо якщо ви хочете , щоб витягти правильні частини вашої рядки:

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

3
Дякую за ваш натяк, Джуба; до речі, я думаю, що прийму відповідь rcs, бо мова йде про базу R:)
Ліза Енн

4
Знання бази R - це добре, але якщо справа стосується рядкових функцій, то ваше життя стане простішим, якщо ви будете використовувати лише стрингер, як згадував @juba
Dieter

1
Я згоден з Дітером. Навчання stringrзаощадить вам майже стільки ж загострення, скільки lubridate.
Ендрю Бреза,

25

Ви можете легко отримати функції Right () і Left (), починаючи з пакету Rbase:

  • права функція

    right = function (string, char) {
        substr(string,nchar(string)-(char-1),nchar(string))
    }
    
  • ліва функція

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

ви можете використовувати ці дві користувацькі функції точно так само, як left () та right () у excel. Сподіваюся, вам це буде корисно


6

Зробіть це простим і використовуйте 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)


2

Якщо ви їдете з 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"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.