我的问题如下:
如果我有一个字符串,并根据它们的重要性进行排序(用逗号分隔):
正文=“光、器件、发光、光致发光、二极管、电极、光电耦合器、半导体、器件发光、器件光发射、器件光耦合器、密封、器件光、半导体器件、发光器件、器件电极、紧凑型发光器件、紧凑型发光器件密封、器件发光二极管、器件光耦合器件、器件密封、类型、发光类型、光输出、光输出、发光器件密封、光发射机、封装组件、光耦合器件、光敏、半导体器件电极、半导体器件光耦合器、透射式光耦合器件、发射机、变送器、类型光、发光二极管”。
变量strsplit文本中的术语可以由包字符串的函数或函数拆分。
library(stringr)
str_split = strsplit(text[1], ", ")正如我们所看到的,对象str_split是由40个分开的术语组成的。
现在,我想摘取前10个不重复的术语.
设袖珍={光,器件,发光,发光,光学,发光,二极管,电极,光电耦合器,半导体}
第一次迭代:光,器件,发射,发光,光学,发光,二极管,电极,光电耦合器,半导体。
术语" light“是”发光“的子集,因此我们删除了术语"light”,并在可变文本中补充了第11项,即设备发光。
更新:袖珍={器件,发射,发光,光学,发光,二极管,电极,光电耦合器,半导体,器件发光}
第二次迭代:器件,发射,发光,光学,发光,二极管,电极,光电耦合器,半导体,器件发光。
术语“设备”是“设备发光”的子集,因此我们删除了“设备”一词,并在可变文本中补充了第12项,即设备光耦合器。
更新:袖珍={发射,发光,光学,发光,二极管,电极,光电耦合器,半导体,器件发光,器件光电耦合器}
第三次迭代:发射,发光,光学,发光,二极管,电极,光电耦合器,半导体,器件发光,器件光电耦合器。
术语“发射”是“发光”的子集,因此我们删除了术语“发射”,并在可变的文本中补充了第13项,即树脂。
更新:袖珍={发光,光学,发光,二极管,电极,光电耦合器,半导体,器件发光,器件光电耦合器,树脂}
第四次迭代:发光,光学,发光,二极管,电极,光电耦合器,半导体,器件发光,器件光电耦合器,树脂。
术语“发光”是“器件发光”的子集,因此我们删除了“发光”一词,在可变的文本中补充了第14项,即密封。
更新:袖珍={光学,发光,二极管,电极,光电耦合器,半导体,器件发光,器件光电耦合器,树脂,密封}
在第5次迭代中:光学、光刻、二极管、电极、光电耦合器、半导体、器件发光、器件光电耦合器、树脂、密封。
术语“光耦合器”是“器件光耦合器”的子集,因此我们删除了“光耦合器”一词,在可变文本中补充了第15项,即器件光。
更新:袖珍={光学,发光,二极管,电极,半导体,器件发光,器件光电耦合器,树脂,密封,器件光}
在第六次迭代中:光学,发光,二极管,电极,半导体,器件发光,器件光电耦合器,树脂,密封,器件光。
术语“设备光”是“器件发光”的子集,因此我们删除了“器件光”一词,并在可变文本中补充了第16项,即半导体器件。
更新:袖珍={光学,发光,二极管,电极,半导体,器件发光,器件光电耦合器,树脂,密封,半导体器件}
其余的可以通过类推.
我很难用R语言来暗示这样的想法。
有人能帮我个忙吗?
最好的
发布于 2011-01-11 14:13:14
您可以使用基于grepl的组合来完成此操作。只要得到所有非重复的条款,并采取前十,这是很容易的。这个小功能还控制单词中的匹配:在这种情况下,"light“与"lightemitting”不匹配。因此,粘贴函数在开始时(为每个术语添加一个空格)。
Remove <- function(x){
tmp <- paste(x,"")
id <- colSums(sapply(tmp,grepl,tmp))==1
x[id]
}
Txt <- "light, device, emitting, light emitting, optical, lightemitting, diode,
electrode, photocoupler, semiconductor, device light emitting,
device photocoupler, resin, sealing, device light, semiconductor device,
lightemitting device, device electrode, compact lightemitting"
Txt_split <- unlist(strsplit(Txt[1], ", "))
> Remove(Txt_split)
[1] "optical" "diode" "device light emitting"
"device photocoupler"
[5] "resin" "sealing" "semiconductor device"
"lightemitting device"
[9] "device electrode" "compact lightemitting"编辑:这个算法不遵循你概述的算法,因为它在非常大的数据集上要花费很长的时间,并且它会增长一个向量(由于内存问题的风险,在R中应该避免这种情况)。
https://stackoverflow.com/questions/4658102
复制相似问题