R:如果元素只存在于几个向量中,则从多个向量中删除元素

R:如果元素只存在于几个向量中,则从多个向量中删除元素,r,vector,R,Vector,如果元素只存在于几个向量中,如何从多个向量中删除它们。 例如,如果我有以下两个向量 > Text <- c("AB.txt", "B.txt", "C.txt") > Text2 <- c("B.txt", "C.txt") 然而,当我在Text2上这样做时,所有元素都会在网络空间中消失 > Text2[-grep( “A”, Text2)] character(0) 如何更改代码以使其在所有向量上工作 提前感谢, Paul您可以使用invert参数: Text

如果元素只存在于几个向量中,如何从多个向量中删除它们。 例如,如果我有以下两个向量

> Text <- c("AB.txt", "B.txt", "C.txt")
> Text2 <- c("B.txt", "C.txt")
然而,当我在Text2上这样做时,所有元素都会在网络空间中消失

> Text2[-grep( “A”, Text2)]
character(0)
如何更改代码以使其在所有向量上工作

提前感谢,


Paul

您可以使用
invert
参数:

Text[grep("A", Text, fixed = TRUE, invert = TRUE)]
#[1] "B.txt" "C.txt"
Text2[grep("A", Text2, fixed = TRUE, invert = TRUE)]
#[1] "B.txt" "C.txt"

您可以使用
invert
参数:

Text[grep("A", Text, fixed = TRUE, invert = TRUE)]
#[1] "B.txt" "C.txt"
Text2[grep("A", Text2, fixed = TRUE, invert = TRUE)]
#[1] "B.txt" "C.txt"

一个选项是确定我们想要保留的
Text2
中的索引。这是所有未出现在
grep
输出中的索引

Text2[!c(1:length(Text2)) %in% grep("A", Text2)]

一个选项是确定我们想要保留的
Text2
中的索引。这是所有未出现在
grep
输出中的索引

Text2[!c(1:length(Text2)) %in% grep("A", Text2)]

如果您查看grep(“A”,Text2)实际返回的内容:

grep("A", Text2)
# integer(0)
也就是说,它在
Text2
中找不到“A”。因此,您的
Text2[-integer(0)]
不会返回任何内容

您可以使用
grepl
测试该字符是否存在(在本例中,使用
),或者不存在该字符


这里,
grepl
如果字符/模式匹配,则返回一个逻辑值。在本例中,对于
Text2
,两个元素中都找不到“A”

grepl("A", Text2)
# [1] FALSE FALSE

所以现在我们可以“否定”这个,并对原始向量进行子集,这与执行
Text2[!c(FALSE,FALSE)]
相同,如果您查看
grep(“A”,Text2)
实际返回的内容:

grep("A", Text2)
# integer(0)
也就是说,它在
Text2
中找不到“A”。因此,您的
Text2[-integer(0)]
不会返回任何内容

您可以使用
grepl
测试该字符是否存在(在本例中,使用
),或者不存在该字符


这里,
grepl
如果字符/模式匹配,则返回一个逻辑值。在本例中,对于
Text2
,两个元素中都找不到“A”

grepl("A", Text2)
# [1] FALSE FALSE

现在我们可以“否定”这一点,并对原始向量进行子集,这与执行
Text2[!c(FALSE,FALSE)]

感谢所有答案,它们都很好。感谢所有答案,它们都很好。