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
。您可以用likeDAG36 | 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