Возможно, что-то вроде
subset(df, grepl("^K0", var1) & grepl("^OTU", var2) |
grepl("^OTU", var1) & grepl("^K0", var2))
# var1 var2 corr
#20033 OTU0001 K09738 0.908
#20034 OTU0095 K09738 0.906
Или используя startsWith
subset(df, startsWith(var1, "K0") & startsWith(var2, "OTU") |
startsWith(var1, "OTU") & startsWith(var2, "K0"))
Или используя dplyr
мы можем использовать grepl
/ str_detect
с filter
library(dplyr)
library(stringr)
df %>%
filter(str_detect(var1, "^K0") & str_detect(var2, "^OTU") |
str_detect(var1, "^OTU") & str_detect(var2, "^K0"))
данные
df <- structure(list(var1 = c("K08975", "K08979", "K09140", "K09142",
"K09152", "K09482", "K09716", "K09723", "K09726", "K06875", "K09149",
"K09721", "OTU0001", "OTU0095", "K00952", "K01622", "K06875",
"K06963", "K07060"), var2 = c("K09735", "K09735", "K09735", "K09735",
"K09735", "K09735", "K09735", "K09735", "K09735", "K09736", "K09736",
"K09736", "K09738", "K09738", "K09738", "K09738", "K09738", "K09738",
"K09738"), corr = c(0.929, 0.934, 0.901, 0.938, 0.947, 0.919,
0.944, 0.949, 0.915, 0.905, 0.901, 0.903, 0.908, 0.906, 0.904,
0.907, 0.912, 0.923, 0.934)), row.names = 20021:20039, class =
"data.frame")