Подтвердить что ты не робот

Как удалить последние n символов из каждого элемента в векторе R

Я очень новичок в R, и я смотрел в Интернете, и нигде я не мог найти простой пример того, как удалить последние n символов из каждого элемента вектора (массив?)

Я исхожу из фона Java, поэтому я хотел бы сделать так, чтобы перебирать каждый элемент a$data и удалять последние 3 символа из каждого элемента.

Как бы вы это сделали?

4b9b3361

Ответ 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.