#r #dataframe
#r #фрейм данных
Вопрос:
В двумерной плоскости у меня есть координаты трех точек во фрейме данных df
, например
df1 <- data.frame(x = c(0,3,3),y = c(0,1,4))
df2 <- data.frame(x = c(0,3,3),y = c(0,0,4))
Есть ли быстрый способ определить, является ли треугольник прямоугольным? Большое спасибо!
Ответ №1:
Надеюсь, это легко, вы хотите
isRectTriangle <- function(df) isTRUE(all.equal(max(d <- c(dist(df))), norm(d[-which.max(d)],"2"),))
где для оценки применяется функция, определенная с помощью dist
и теоремы Пифагора.
Вы увидите
> isRectTriangle(df1)
[1] FALSE
> isRectTriangle(df2)
[1] TRUE
Комментарии:
1. Округление будет проблемой: не сравнивайте реальные значения с
==
.all.equal()
Функция выполняет приблизительное сравнение и имела бы больше смысла.2. @user2554330 Спасибо за напоминание. Теперь это исправлено.