r-用索引名称替换字符串中的字母

  • 本文关键字:字符串 替换 索引 r gsub
  • 更新时间 :
  • 英文 :


我有一个名为的向量

nms <- LETTERS[1:10]
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"

我有一条线作为规则

rule <- "X[,3]<=-0.85 & X[,10]>-0.95 & X[,5]>0.35"

我需要用具有相同索引的名称替换"X"

X[,3]nms[3] ("C")。。。X[,10]nms[10] ("J")

我想要

"C[,3]<=-0.85 & J[,10]>-0.95 & E[,5]>0.35"

不完整答案:从开始

r1 <- stringr::str_extract_all(rule,"\[,([0-9]+)\]")
n <- purrr::map_dbl(r1[[1]], readr::parse_number)

第一行提取所有带括号的表达式;第二个从每一个中检索数值。

现在,每次循环使用subnms的相应元素替换第一个Xfor循环应该工作。

我确信有可能使它更简洁,但我不知道是如何做到的

nms <- LETTERS[1:10]
rule <- "X[,3]<=-0.85 & X[,10]>-0.95 & X[,5]>0.35"

r1 <- stringr::str_extract_all(rule,"\[,([0-9]+)\]")
n <- purrr::map_dbl(r1[[1]], readr::parse_number)
idx <- gregexpr(pattern ='X',rule)[[1]]
for(i in 1:length(n))   substr(rule, idx[i], idx[i]) <- nms[n[i]]

rule
[1] "C[,3]<=-0.85 & J[,10]>-0.95 & E[,5]>0.35"

最新更新