在Rstudio中,我需要通过字符串
中的代码找到下一个值示例1,C
function("C", "01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json")
解决方案:2
示例2,MMAX
function("MMAX", "01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json")
解决方案:8
示例3,包含MMAX
function("MMAX", "01_BP01_C_2_MMAX_12__TIME_SECONDS_1.json")
解决方案:12
答案 0 :(得分:2)
以下是基于strpslit
的自定义功能:
getResult <- function(pattern, target, splitPattern = "_") {
foo <- unlist(strsplit(target, splitPattern))
foo[which(foo == pattern) + 1]
}
# Returns 2
getResult("C", "01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json")
# Returns 8
getResult("MMAX", "01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json")
答案 1 :(得分:1)
使用str <- c("01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json",
"01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json",
"01_BP01_C_2_MMAX_12__TIME_SECONDS_1.json")
pat <- c("C", "MMAX", "MMAX")
splt <- function(pattern, string) {
as.numeric(gsub(paste0("^.*?", pattern, ".*?(\\d+).*"), "\\1", string))
}
sapply(1:length(str), function(x) splt(pat[x], str[x]))
[1] 2 8 12
和正则表达式,您可以这样做:
lpArray