【问题标题】:How to detect an operator like '[' in a character-variable如何在字符变量中检测像“[”这样的运算符
【发布时间】:2014-08-01 11:08:27
【问题描述】:

假设我有 "var""var[1]" 这样的字符变量。如何检测字符中是否有运算符[]

我一直在研究 strsplitagrep 但到目前为止没有成功..

非常感谢!

【问题讨论】:

  • 您能详细说明一下吗?为什么要这样做?
  • 你在做什么?你得到什么错误?是不是因为方括号是 grep 中的特殊字符,你必须做grepl("\\[",x) 才能匹配它们?
  • 我写了一个函数,在极少数情况下,当数据以子集形式(即data[1,])提供时,它可能会产生意想不到的结果,所以我想在这样输入数据时发出警告。
  • 重新设计您的功能。有更好的方法来处理这个问题。
  • 谢谢@Spacedman, grepl("\[",x) 正是我想要的!

标签: r operators character subset string-split


【解决方案1】:

特殊字符的普通正则表达式转义:

> x=c("var","var[1]")
> grepl("\\[",x)
[1] FALSE  TRUE

阅读正则表达式:help(regexp)

【讨论】:

    【解决方案2】:

    要获取通过索引找到的值:

     x <- "var[22]"
     m <- regexpr("\\[.*\\]", x, perl=TRUE)
     > regmatches(x, m)
     [1] "[22]"
    

    或者获取值:

     > grep("\\[.*\\]", c("var[2]"), perl=TRUE, value=TRUE)
     [1] "var[2]"
    

    获取索引:

    > grep("\\[.*\\]", c("var[2]"), perl=TRUE, value=FALSE)
    [1] 1
    

    【讨论】:

      猜你喜欢
      • 2012-09-18
      • 1970-01-01
      • 2010-09-22
      • 2021-07-05
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      相关资源
      最近更新 更多