#r
Вопрос:
У меня есть вектор, который выглядит так:
> vector <- c("1","2","0", "10", "name", "hello")
Я хочу преобразовать его так, чтобы каждый числовой символ становился строкой, оставляя фактические строки незатронутыми.
[1] "test" "test" "test" "test" "name" "hello"
Как я могу это сделать?
Ответ №1:
sub("^\d $", "test", vector)
[1] "test" "test" "test" "test" "name" "hello"
str_replace(vector, "^[0-9] $", "test")
[1] "test" "test" "test" "test" "name" "hello"
Ответ №2:
Один из вариантов warnings
заключается в том, чтобы преобразовать в integer
NA
значения, проверить is.na
их и выполнить назначение
vector[!is.na(as.integer(vector))] <- "test"
-выход
> vector
[1] "test" "test" "test" "test" "name" "hello"
Идея заключается в том, что элементы, отличные от NA, возвращают NA при преобразовании в числовое значение, и это записывается в виде логического вектора с is.na
подмножеством исходного вектора, а затем выполняет назначение
Другой вариант без предупреждений также возможен с регулярным выражением, т. е. найдите элементы, в которых от начала ( ^
) до конца () есть только цифры или точки $
, и замените их на «тест».
vector[grep("^[0-9.] $", vector)] <- "test"
Ответ №3:
library(stringr)
str_replace_all(vector, "[0-9].*", 'test')
[1] "test" "test" "test" "test" "name" "hello"