Как заменить одну строку слова в несколько строк? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть фрейм данных некоторых строк. В некоторых строках есть одно слово, которое я хочу заменить пустым. Я могу получить слово, но во время замены я получаю предупреждение

Предупреждение: в gsub (pattern = text [lengths (gregexpr ("[[: alpha:]] +", текст)) ==: аргумент 'pattern' имеет длину> 1, и будет использоваться только первый элемент

Только первое слово получает замену, а остальное остается как есть. Я хочу заменить все отдельные слова во фрейме данных.

Код, который я использую, как показано ниже.

text <- c("Because I could not stop for Death -",
          "Word1",
          "He kindly stopped for me -",
          "Word2",
          "The Carriage held but just Ourselves - ",
          "word3",
          "and Immortality")

gsub(pattern = text[lengths(gregexpr("[[:alpha:]]+", text)) == 1], "", text)

Я ожидаю выхода ниже.

"Because I could not stop for Death -",
          "He kindly stopped for me -",
          "The Carriage held but just Ourselves - ",
          "and Immortality"

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Не могли бы вы попробовать и дайте мне знать, если это поможет вам.

text <- c("Because I could not stop for Death -",
          "Word1",
          "He kindly stopped for me -",
          "Word2",
          "The Carriage held but just Ourselves - ",
          "word3",
          "and Immortality")

код для получения требуемого вывода OP:

text[!grepl("[Ww]ord[0-9]+", text)] 

Вывод будет следующим.

[1] "Because I could not stop for Death -"    "He kindly stopped for me -"             
[3] "The Carriage held but just Ourselves - " "and Immortality"

Для grepl со страницы справки:

grepl возвращает логический вектор (соответствует или нет для каждого элемента x).

0 голосов
/ 03 июля 2018
a=gsub("^\\w+$","",text)
[1] "Because I could not stop for Death -"    ""                                       
[3] "He kindly stopped for me -"              ""                                       
[5] "The Carriage held but just Ourselves - " ""                                       
[7] "and Immortality"   

grep("\\w",a,value = T)
[1] "Because I could not stop for Death -"    "He kindly stopped for me -"             
[3] "The Carriage held but just Ourselves - " "and Immortality"  

или вы можете просто сделать

grep("\\w+\\s",text,value = T)
[1] "Because I could not stop for Death -"    "He kindly stopped for me -"             
[3] "The Carriage held but just Ourselves - " "and Immortality"  
0 голосов
/ 03 июля 2018

Простое логическое индексирование поможет вам, так как слова, которые вы хотите сохранить, находятся в позициях 1, 3, 5, ... и т. Д., Т. Е.

text[c(TRUE, FALSE)]
#[1] "Because I could not stop for Death -"    "He kindly stopped for me -"             
#[3] "The Carriage held but just Ourselves - " "and Immortality"
...