У меня есть два вектора на выходе, и они имеют разную длину.Теперь я хочу сравнить каждый элемент одного вектора с каждым элементом другого вектора.
Предположим, это два моих вектора:
r1 <- c(1.5,3.5,4.5,5.5,8.5,11.5,12.5,17.5)
min <- c(3,6,11)
И моя команда сравнения выглядит следующим образом:
m1 <- which(abs(outer(min, r1, `-`)) <= 0.5, arr.ind = TRUE)
cbind.data.frame(min = min[m1[,1]], r1 = r1[m1[,2]])
Это работает и дает мне такой вывод:
min r1
1 3 3.5
2 6 5.5
3 11 11.5
Сейчас я спрашиваю, как сделать то же самое, просто используя цикл for (возможно, с помощью оператора if else)?Я уже придумал это решение, но я не знаю, как интегрировать допуск (+/- 0,5) ...
z<-rep(0,length(r1))
for(i in 1:length(r1))
{
for(j in 1:length(min))
{
if(x[j]>y[i])
z[i]=z[i]+1
}
}
Есть идеи?
РЕДАКТИРОВАТЬ:
Как получить вектор min в качестве результирующего вектора, если у меня есть, например, эти векторы:
min
[1] 2 15
r1
[1] 1.5 3.5 4.5 5.5 8.5 11.5 12.5 17.5
После запуска кода из @shirin я получаю это как результатvector:
V1 V2
1 2 1.5
С этим сообщением об ошибке :
Ошибка в rbind (res, cbind (min [i], hc [abs (hc - -min [i]) <= 0.5])): <br>число столбцов матриц должно совпадать (см. аргумент 2)
Теперь я хочу, чтобы мой min вектор получался в результатевектор, если мой вектор res дает мне только одну строку