【问题标题】:split string and replace indices拆分字符串并替换索引
【发布时间】:2021-05-31 05:28:25
【问题描述】:

我有这样的规则

rule <- "X[,14]<=-0.00479499999999999 & X[,14]<=-0.00490000000000002 & X[,14]>-0.00595499999999993 & X[,14]<=-0.00593499999999991 & X[,96]>0.000395000000000034 & X[,96]<=0.000859999999999972"
  1. 我需要按索引拆分规则

    rule1 -0.0059 & X[,14] 规则 2 0.0003 & X[,96]

  2. 在这种情况下,将索引替换为从 1 到 2 的新索引

14,96 到 1,2

rule1 <- "X[,1]<=-0.0047 & X[,1]<=-0.0049 &
          X[,1]>-0.0059 & X[,1]<=-0.0059  

rule2 <-  X[,2]>0.0003 & X[,2]<=0.0008"

【问题讨论】:

    标签: r string gsub


    【解决方案1】:

    我们将“规则”拆分为&amp;',然后将parse_number的数字部分提取为split,将数字作为一个组,然后pastelist元素,最后使用@987654326 @ from stringr 替换索引

    library(stringr)
    v1 <- strsplit(rule, "\\s*\\&\\s*")[[1]]
    
    v2 <- trimws(sapply(split(v1, readr::parse_number(v1)), function(x)
              sub("\\s*\\&\\s*$", "", paste(x, collapse=" & "))))
    str_replace_all(v2, setNames(as.character(seq_along(v2)), names(v2)))
    

    -输出

    #[1] "X[,1]<=-0.00479499999999999 & X[,1]<=-0.00490000000000002 & X[,1]>-0.00595499999999993 & X[,1]<=-0.00593499999999991"
    #[2] "X[,2]>0.000395000000000034 & X[,2]<=0.000859999999999972"           
    

    【讨论】:

    • @mr.T 抱歉,这是基于您提供的示例
    • @mr.T 在您帖子的示例中,字符串用\n 分隔。这里不是
    猜你喜欢
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2020-11-26
    • 2021-12-23
    相关资源
    最近更新 更多