Как использовать выходные данные индексов для подмножества моего информационного кадра? - PullRequest
1 голос
/ 28 октября 2019

Я хочу сопоставить вектор 1 с вектором 2, чтобы увидеть, найдены ли элементы в векторе 1 и найдены ли в векторе 2. Затем я хочу создать 2 новых вектора - подмножество вектора 1 из строк значений, содержащих как векторы, так иподмножество вектора 1 для значений, не найденных в обоих векторах. Функция match(), за которой следует which(is.na()), отлично работает для небольших наборов данных, но у меня есть набор данных с 1000 элементами.

Data1 <- c(1, 2, 3, 4, 5) 
Data2 <- c(1, 3, 5, 6, 7) 

#Match vector1 to vector2  
A <- match(Data1, Data2) 
[1]  1 NA  2 NA  3

#to obtain positions of non matching elements
x <- which(is.na(A), arr.ind = TRUE)
[1] 2 4

Data1[c(2,4)]

#to obtain positions of matching elements
y < which(A >= 1) 
[1] 1 3 5

Data1[c(1,3,5)]

1 Ответ

0 голосов
/ 28 октября 2019

Попробуйте, чтобы вам не приходилось иметь дело с АН из match ():

Data1 <- c(1, 2, 3, 4, 5) 
Data2 <- c(1, 3, 5, 6, 7)

# Values of Data1 in Data2
A <- Data1[Data1 %in% Data2]
A

# output:
# > A
# [1] 1 3 5

# create not in function
'%ni%' <- Negate('%in%')

# Values of Data1 not in Data2
B <- Data1[Data1 %ni% Data2]
B

# output:
# > B
# [1] 2 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...