我有两个形式的字符串
" Initestimate"或" L#估计" #是1位或2位数
" Nameestimate" 名称是实际符号的名称。在下面的示例中,我们的符号名称为" 6JU4"
我有一个矩阵,其中包含包含" InitSymbol"的列。和" L#符号"。我想在"估计"之前返回第一行包含子字符串的列的列名。 我使用的是stringr。现在我用str_sub的一堆调用编码,但它真的很草率,我想清理它并做正确的事。 示例代码:
> examplemat <- matrix(c("RYU4","6JU4","6EU4",1,2,3),ncol=6)
> colnames(examplemat) <- c("InitSymb","L1Symb","L2Symb","RYU4estimate","6JU4estimate","6EU4estimate")
> examplemat
InitSymb L1Symb L2Symb RYU4estimate 6JU4estimate 6EU4estimate
[1,] "RYU4" "6JU4" "6EU4" "1" "2" "3"
> searchStr <- "L1estimate"
因此,回答是我正在寻找的答案,我希望能够输入examplemat [, answer ],这样我就可以提取数据列了(在这种情况下,&#34; 2&#34;)
我真的不知道怎么做正则表达式,但我认为答案看起来像
examplemat[,paste0(**some regex function**("[(Init)|(L[:digit:]+)]",searchStr),"estimate")]
那里有什么功能,是我的正则表达式代码吗?
答案 0 :(得分:1)
可能你可以试试:
library(stringr)
Extr <- str_extract(searchStr, '^[A-Za-z]\\d+')
Extr
[1] "L1"
#If the searchStr is `Initestimate`
#Extr <- str_extract(searchStr, '^[A-Za-z]{4}')
pat1 <- paste0("(?<=",Extr,").*")
indx1 <-examplemat[,str_detect(colnames(examplemat),perl(pat1))]
pat2 <- paste0("(?<=",indx1,").*")
examplemat[,str_detect(colnames(examplemat), perl(pat2))]
#6JU4estimate
# "2"
#For searchStr using Initestimate;
#examplemat[,str_detect(colnames(examplemat), perl(pat2))]
#RYU4estimate
# "1"
答案 1 :(得分:0)
问题有点令人困惑,所以我不确定我的解释是否正确。
首先,您将在没有“Symb”的字符串“coolSymb”中提取值 其次,您可以检测列名是否包含“cool”并返回位置(列索引) 由哪个()声明。 最后,您可以使用简单的矩阵索引提取值。
library(stringr)
a = str_split("coolSymb", "Symb")[[1]][1]
b = which(str_detect(colnames(examplemat), a))
examplemat[1, b]
希望这有帮助,
答案 2 :(得分:0)
won782使用str_split激发了我找到一个有效的答案,虽然我仍然想知道如何通过匹配前缀而不是排除后缀来做到这一点,所以我会接受这样做的答案。 这是一步一步的
> str_split("L1estimate","estimate")[[1]][1]
[1] "L1"
将上述步骤替换为获得{L1}而不是获得{not estimate}奖励积分
的步骤> paste0(str_split("L1estimate","estimate")[[1]][1],"Symb")
[1] "L1Symb"
> examplemat[1,paste0(str_split("L1estimate","estimate")[[1]][1],"Symb")]
L1Symb
[1,] "6JU4"
> paste0(examplemat[1,paste0(str_split("L1estimate","estimate")[[1]][1],"Symb")],"estimate")
[1] "6JU4estimate"
> examplemat[,paste0(examplemat[1,paste0(str_split("L1estimate","estimate")[[1]][1],"Symb")],"estimate")]
6JU4estimate
[1,] "2"