注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

悠游自在

似水流年,悠游天地,自在我心

 
 
 

日志

 
 
 
 

R中的字符串查找定位操作  

2016-07-08 11:14:27|  分类: IT技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
R中的向量操作挺强的,但对于新手,特别是从其他语言转过来的TX来说,有时最简单的操作反而容易摸不清头脑。
比如
1 字符串中查找子串:regexpr
如果str、substr都为字符串,查找一个substr在str中的位置,使用regexpr
例如:
  str='hello,world';substr='world'
  idx=regexpr(substr,str) 
  这个时候idx返回的是一个atomic的structure,
> idx
[1] 7
attr(,"match.length")
[1] 5
attr(,"useBytes")
[1] TRUE
  str='hello,world';substr='world'
  idx=regexpr(substr,str) 
那么定位的位置就用idx[1]就可以获得了,为7。要获得另外两个值,使用attr提取structure中的值:
> attr(idx,'match.length')
[1] 5
> attr(idx,'useBytes')
[1] TRUE
为了进一步了解regexpr这个函数,还要看看未命中时的表现
> idx=regexpr('hi',str)
> idx[1]
[1] -1
> attr(idx,'match.length')
[1] -1
> attr(idx,'useBytes')
也就是说字符串中没有找到该子串时,返回值应该为-1
2 字符串向量中精确查找某个字符串,which
例如:
strs=c('上海','北京','深圳')  #三个字符串组成的向量
substr='深圳'#需要精确匹配的字符串
idx=which(strs==substr)#注意先后顺序,向量放在==号前面,被查找值放后面,运行结果如下
> idx
[1] 3
再看看找不到的情况:
> which(strs=='henan')
integer(0)
  评论这张
 
阅读(65)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018