Я новичок в R, и мне не удалось найти в Интернете простой пример того, как удалить последние n символов из каждого элемента вектора (массива?)
У меня опыт работы с Java, поэтому я хотел бы перебрать каждый элемент a$data
и удалить последние 3 символа из каждого элемента.
Как бы вы это сделали?
-3
на,-0
чтобы добиться желаемого эффекта! У меня много данных с датами, например:"2014-03-27 23:00:00 GMT" "2014-03-31 00:00:00 BST"
- да, два часовых пояса вместе, а функция as.Date возвращает неожиданные результаты (на день раньше для дат BST) - поэтому я хотел удалить отметку часового пояса, оказывается, мне нужно делаю-0
и он исчезает вместе с часамиstrptime
).Вот способ
gsub
:источник
gsub('.{5}$', '', 'abcd')
.Хотя это в основном то же самое с ответом @nfmcclure, я предпочитаю использовать
stringr
пакет, поскольку он предоставляет набор функций, имена которых наиболее согласованы и описательны, чем имена в базе R (на самом деле я всегда гуглил, «как получить количество буквы R ", так как я не могу вспомнить названиеnchar()
).Это удаляет последние 3 символа из каждого значения в
Species
столбце.источник
stringr
пакетом есть еще более простое решение:str_sub(iris$Species, end=-4)
То же самое может быть достигнуто с помощью пакета stringi :
источник
Подобно @Matthew_Plourde с использованием
gsub
Однако при использовании шаблона, который обрезает до нуля символов, т.е. возвращает "", если исходная строка короче, чем количество символов, которые нужно вырезать:
Разница в том, что
{0,3}
квантификатор указывает от 0 до 3 совпадений, тогда как{3}
требует ровно 3 совпадений, иначе совпадение не найдено, и в этом случаеgsub
возвращается исходная неизмененная строка.NB использование
{,3}
было бы эквивалентно{0,3}
, я просто предпочитаю последнее обозначение.См. Дополнительную информацию о квантификаторах регулярных выражений: https://www.regular-expressions.info/refrepeat.html
источник
sub()
вместоgsub()
.