R 从数据集中排除值

R 从数据集中排除值,r,R,我试图编写一个代码,从数据/数字集中排除某些因素 我写了以下内容: x <- c("1407741214DAG359", "2211682828DAG359", "1304410201DAG359", "0908700465DAG36", "0909700565G379") y <- c("1407741214DAG359", "2211682828DAG359", "1304410201DAG359", "0","0") 但是,代码似乎只排除了仅包含以下内容的值:DAG36和G

我试图编写一个代码,从数据/数字集中排除某些因素

我写了以下内容:

x <- c("1407741214DAG359", "2211682828DAG359", "1304410201DAG359", "0908700465DAG36", "0909700565G379")

y <- c("1407741214DAG359", "2211682828DAG359", "1304410201DAG359", "0","0")
但是,代码似乎只排除了仅包含以下内容的值:DAG36和G379,而不包括任何包含
DAG36
G379
的值


你们中有谁能帮我吗?

你们正在搜索的是
grep()
grepl()
。这两个函数都在给定的字符串或字符串向量中搜索模式

您要查找的模式是
DAG36
G379
。您可以用like
DAG36 | G379
来表达这一点

grep("DAG36|G379", x)
# [1] 4 5 

grepl("DAG36|G379", x)
# [1] FALSE FALSE FALSE TRUE TRUE
正如您所看到的,这两个函数实际上是一回事,可以互换使用。现在,您可以使用索引将相关字符串替换为零:

x[ grepl("DAG36|G379", x) ] <- 0

x <- x[ grepl("DAG36|G379", x) ]                    # Easier version of removing relevant strings
x <- grep("DAG36|G379", x, invert = T, value = T)   # More direct version 

x[grepl(“DAG36 | G379,x)]也许您正在寻找
grep(“DAG36 | G379,x,value=TRUE,invert=TRUE)
。使用
TRUE
FALSE
F
T
更可靠。没有什么能阻止一个人写
T
x[ grepl("DAG36|G379", x) ] <- 0

x <- x[ grepl("DAG36|G379", x) ]                    # Easier version of removing relevant strings
x <- grep("DAG36|G379", x, invert = T, value = T)   # More direct version