У меня есть блок данных с 11 переменными, представленными буквами от a до k, нанесенными на двумерную диаграмму рассеяния.точки извлечения, основанные на значениях расстояния и оси Евклида R
cor<-data.frame(X=c(0.36187115, -0.54755904, -0.82417308, -0.70806545, -0.77422866, -0.70003404,
-0.70043884, 0.73602124,-0.89909694, -0.05937341, 0.93496883),
Y=c(-0.54354070,-0.81211142, -0.52775892, 0.40191296, 0.36820779, 0.28163131,
-0.26161395, -0.26386668,-0.31894766, -0.91541962, -0.04548996),
row.names = letters[1:11]);cor
a<-seq(0,2*pi, length=100)
plot(cos(a),sin(a), type="l", lty=2, xlab = "X", ylab = 'Y')
points(cor[cor$X<0 & cor$Y<0,-3], pch=20, col='blue')
points(cor[cor$X<0 & cor$Y>0,-3], pch=20, col='forestgreen')
points(cor[cor$X>0 & cor$Y<0,-3], pch=20, col='red')
abline(v = 0, h = 0)
text(cor, rownames(cor), pos = 3, cex = 0.8)
Используя евклидово расстояние я заметить, что точки (д, Е, F и G, I) имеют расстояние меньше, чем 30.
d<-dist(cor, method = 'euclidean');d
Я хочу запрограммировать код R, чтобы идентифицировать все точки с расстоянием < 30 и получить одну из этих точек на основе значений X и Y оси.
Ex: точки i и g имеют значение расстояния 0,206, основанное на критерии точки оси g, должны быть исключены из-за меньшего значения X и оси Y.
Однако я не знаю, где начать.
Кто-нибудь может помочь мне начать код?
Спасибо
вы можете заменить цикл на 'cbind (rownames (d) [pairs [, 1]], colnames (d) [pairs [, 2]])' – rawr