R 打印两个字符对象中的公共对象

R 打印两个字符对象中的公共对象,r,string,object,character,R,String,Object,Character,我有两个字符对象,我需要看看它们有多少个共同的字符,然后打印它们。我可以看到它们有多少共同点,但我似乎无法找出打印它们的代码。下面是一个简单的例子: LETTERS list <- c("A", "H", "J", "K") length(na.exclude(pmatch(LETTERS[1:20],list[1:3]))) print(pmatch(LETTERS[1:20],list[1:3])) 字母 列出尝试在% > LETTERS[LETTERS %in% list]

我有两个字符对象,我需要看看它们有多少个共同的字符,然后打印它们。我可以看到它们有多少共同点,但我似乎无法找出打印它们的代码。下面是一个简单的例子:

LETTERS
list <- c("A", "H", "J", "K")
length(na.exclude(pmatch(LETTERS[1:20],list[1:3]))) 
print(pmatch(LETTERS[1:20],list[1:3]))
字母

列出尝试在%

> LETTERS[LETTERS %in% list]
[1] "A" "H" "J" "K"
例如:

myletters<-LETTERS[1:20]
> myletters[myletters %in% list[1:3]]
[1] "A" "H" "J"

如果只希望最终结果作为一个集合(删除重复项),请使用以下命令:

intersect(LETTERS, c("A", "H", "J"))
> mylist[!is.na(Vectorize(pmatch, "x")(mylist, LETTERS))]
[1] "B" "A" "B"
如果要使用部分匹配,必须注意
pmatch
不允许第一个输入中有多个元素与第二个输入中的相同元素匹配。请注意区别:

mylist <- c("B","A","B","2")

> pmatch(mylist, LETTERS)
[1]  2  1 NA NA

> Vectorize(pmatch, "x")(mylist, LETTERS)
 B  A  B  2 
 2  1  2 NA

这是一个更好的方法(@metrics),但是使用
list[na.omit(pmatch(字母[1:20],list[1:3])]]
与您的方法一起使用会有效。不要写在列表上,因为它是一个R基对象。请参见
?列表
mylist <- c("B","A","B","2")

> pmatch(mylist, LETTERS)
[1]  2  1 NA NA

> Vectorize(pmatch, "x")(mylist, LETTERS)
 B  A  B  2 
 2  1  2 NA
> mylist[!is.na(Vectorize(pmatch, "x")(mylist, LETTERS))]
[1] "B" "A" "B"