我有一个向量 v ,其中每个条目是一个或多个字符串(或可能是字符(0)),用分号分隔:
ABC
DEF;ABC;QWE
TRF
character(0)
ABC;GFD
在“;”上拆分后,我需要找到包含“ABC”(1、2、5 或逻辑向量 T、T、F、F、T)的向量的索引
我目前正在使用如下循环:
toSelect=integer(0)
for(i in c(1:length(v))){
if(length(v[i])==0) next
words=strsplit(v[i],";")[[1]]
if(!is.na(match("ABC",words))) toSelect=c(toSelect,i)
}
不幸的是,我的向量有 450k 条目,所以这需要很长时间。我宁愿通过做类似的事情来创建一个逻辑向量
toSelect=(!is.na(match("ABC",strsplit(v,";")))
但是由于 strsplit 返回一个列表,我找不到将 strsplit(v,";") 正确格式化为向量的方法(unlist 不会这样做,因为它会破坏索引)。有人对如何加速此代码有任何想法吗?
谢谢!