Преобразуйте числа в строки, оставляя символы в R нетронутыми

#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"