Как удалить последние n символов из каждого элемента в векторе R
Я очень новичок в R, и я смотрел в Интернете, и нигде я не мог найти простой пример того, как удалить последние n символов из каждого элемента вектора (массив?)
Я исхожу из фона Java, поэтому я хотел бы сделать так, чтобы перебирать каждый элемент a$data
и удалять последние 3 символа из каждого элемента.
Как бы вы это сделали?
Ответы
Ответ 1
Вот пример того, что я буду делать. Надеюсь, это то, что вы ищете.
char_array = c("foo_bar","bar_foo","apple","beer")
a = data.frame("data"=char_array,"data2"=1:4)
a$data = substr(a$data,1,nchar(a$data)-3)
a теперь должен содержать:
data data2
1 foo_ 1
2 bar_ 2
3 ap 3
4 b 4
Ответ 2
Вот путь с gsub
:
cs <- c("foo_bar","bar_foo","apple","beer")
gsub('.{3}$', '', cs)
# [1] "foo_" "bar_" "ap" "b"
Ответ 3
То же самое можно сделать с пакетом stringi:
library('stringi')
char_array <- c("foo_bar","bar_foo","apple","beer")
a <- data.frame("data"=char_array, "data2"=1:4)
(a$data <- stri_sub(a$data, 1, -4)) # from the first to the last but 4th char
## [1] "foo_" "bar_" "ap" "b"
Ответ 4
Хотя это в основном совпадает с ответом @nfmcclure, я предпочитаю использовать пакет stringr
, поскольку он предоставляет набор функций, имена которых наиболее согласованы и описательны, чем те, что содержатся в базе R (на самом деле я всегда google для "как получить число символов в R", поскольку я не могу запомнить имя nchar()
).
library(stringr)
str_sub(iris$Species, 1, str_length(iris$Species)-3)
Это удаляет последние 3 символа из каждого значения в столбце Species
.