Я хотел бы применить функцию, которая будет вычислять значение .dist (расстояние) между деревьями (id), но сгруппированы по тому же значению plot_id. В этом случае функция будет рассчитывать только отношения между деревьями (id) из одного и того же графика (plot_id).
search_dfixed <- function(id, x, y, dist)
{ .class <- if (class(id) == "factor") {
"character" } else { class(id) }
m <- as.matrix(dist(data.frame(x, y)))
rownames(m) <- id; colnames(m) <- id
z <- as.data.frame(m) %>%
tibble::as_tibble() %>%
dplyr::mutate(id = id) %>%
tidyr::gather(competitor, .dist, -id) %>%
dplyr::filter(
.dist != 0,
.dist <= dist
) %>%
dplyr::arrange(id, .dist) %>%
dplyr::mutate(
id = 'class<-'(id, .class),
competitor = 'class<-'(competitor, .class)
)
return(z)
}
... где id = tree_id, x и y - пространственные координаты (в метрах, десятичных числах) ) и dist = расстояние между каждым tree_id).
Как лучше всего изменить функцию, чтобы сделать это?