У меня есть два фрейма данных, ниже приведена небольшая выборка каждого из них:
df1 <- data.frame(a1= c(3,4), a2 = c(8, 8), a3 = c(4, 18), a4 = c(9,9), a5 = c(17, 30))
df2 <- data.frame(a1 = c(2,2,2,3,3,3,4,4,4), a2 = c(7,7,7,7,7,7,7,7,7),
a3 = c(4,4,4,4,4,4,4,4,4), a4 = c(10,10,10, 10, 10, 10, 10,10,10),
a5 = c(15,16,17, 15, 16, 17, 15, 16, 17))
Я хотел бы проверить для каждой строки df1
, есть ли у нее «соседи» в df2
где под соседями я подразумеваю наблюдения, которые отличаются не более чем на 1 в каждом столбце (в абсолютном значении).Так, например, строка 2 из df2
является соседом строки 1 в df1
.
В настоящее время я делаю это следующим образом:
sweep(as.matrix(df2), 2, as.matrix(df1[1,]), "-")
Для строки 1 изdf1
, и я должен повторить это для каждой строки df1. Обратите внимание, что df2 и df1 не имеют одинаковое количество строк.
Однако я действительно хотел бы избежать этого "по строкам", потому что мои фреймы данных имеют много строк,Есть ли способ сделать это векторно?