как разбить слова в R - PullRequest
       1

как разбить слова в R

0 голосов
/ 15 сентября 2018

У меня есть список слов в файле.Например, это NUT, CHANNEL, DIA, CARBON, STEEL, интегрированные, упаковка, решения

Теперь у меня есть предложение NUTCHANNELDIA 16U NCCARBONSTEEL.Теперь мне нужно разделить этот вывод, как показано ниже

a= NUTCHANNELDIA 16U NCCARBONSTEEL, integratedpackagingsolutions
a= split words(NUTCHANNELDIA 16U NCCARBONSTEEL, 
   integratedpackagingsolutions)
a= NUT CHANNEL DIA 16U NC CARBON STEEL

Есть ли способ для этого

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Это очень простой подход, который может сработать для вас:

word.list <- c("NUT", "CHANNEL", "DIA", "CARBON", "STEEL")

a <- "NUTCHANNELDIA 16U NCCARBONSTEEL"

for (word in word.list) {
  a <- gsub(word, paste0(word, " "), a)  
}

print(a)
[1] "NUT CHANNEL DIA  16U NCCARBON STEEL "

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

0 голосов
/ 15 сентября 2018

Вот базовая опция R с использованием strsplit.Мы можем попытаться разбить следующий шаблон:

(?<=NUT|CHANNEL|DIA|CARBON|STEEL)|(?<=.)(?=NUT|CHANNEL|DIA|CARBON|STEEL)

Это разделит, если в любой точке строки то, что предшествует или следует, является одним из ваших ключевых слов.Обратите внимание, что термин (?<=.) необходим из-за того, как ведут себя позитивные прогнозисты в strsplit.

terms <- c("NUT", "CHANNEL", "DIA", "CARBON", "STEEL")
regex <- paste(terms, collapse="|")
a <- "NUTCHANNELDIA 16U NCCARBONSTEEL"
strsplit(a, paste0("(?<=", regex, ")|(?<=.)(?=", regex, ")"), perl=TRUE)
[[1]]
[1] "NUT"     "CHANNEL" "DIA"     " 16U NC" "CARBON"  "STEEL"

Демо

У термина 16U NC есть пробел, который я не пытался удалить.Если это вас беспокоит, вы можете либо сократить пробелы в каждом термине, когда вы его употребляете, либо мы можем попытаться изменить шаблон, чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...