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"