如何在R

时间:2018-09-15 16:08:34

标签: r

我在文件中有一个单词列表。例如,它们是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 :(得分:3)

这是使用strsplit的基本R选项。我们可以尝试按以下模式进行分割:

(?<=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"

Demo

16U NC术语有一些前导空格,我没有尝试删除。如果您对此感到担心,则可以在使用每个术语时删去空白,或者我们可以尝试修改模式来做到这一点。

答案 1 :(得分:0)

这是一种非常简单的方法,可能对您有用:

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 "

对于我来说还不清楚,是您只是想让字符串更具可读性,还是希望它实际上分成一个向量。无论如何,上面的内容应该很容易修改。