Который () не соответствует данной строке строке данных - PullRequest
1 голос
/ 22 мая 2019

Я хочу сопоставить однострочный data.frame с другим data.frame.Значения в one_row data.frame определенно присутствуют в другом фрейме данных.Я хотел использовать функцию which (), чтобы получить индекс строки, в которой она совпадает, но она не работает.(см. код ниже)

enter image description here

x  y
4  53


x   y
13  69
97 122
4  53
33 154

idx= which(medoids==a, arr.ind=TRUE)
Error in Ops.data.frame(medoids, a) : 
  ‘==’ only defined for equally-sized data frames

Но я ожидаю: idx = 3

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

Вы можете использовать взаимодействие внутри, чтобы соединить два столбца и разрешить сравнение.

medoids <- read.table(header = TRUE, text = "x  y
4  53")

a <- read.table(header = TRUE, text = "x   y
13  69
97 122
4  53
33 154")


idx <- which(interaction(medoids)==interaction(a))
0 голосов
/ 22 мая 2019

Поскольку ваши фреймы данных имеют разный размер, вам нужно использовать mapply для сопоставления столбцов один за другим и сравнения, т. Е.

mapply(function(x, y)which(x == y), medoids, a)
#x y 
#3 3 

ПРИМЕЧАНИЕ: Вам не нужно arr.ind, так как вы сравниваете одномерные векторы (отдельные столбцы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...