You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First, thank you for creating this nice wrapper function! As the title already indicates, the function does not return the original coordinates. It seems that this is a rounding issue. Please see my example code which should illustrate the problem.
# create dummy data.frame with X/Y coordinates and ID column
cur_df = 1:500
cur_df = as.data.frame(cbind(cur_df, matrix(rexp(1000, rate=.1), ncol=2)))
colnames(cur_df)<- c("id", "X", "Y")
# compute concave hull
coords <- as.matrix(cbind(cur_df$X, cur_df$Y))
hull = as.data.table(concaveman(coords, concavity = 1))
colnames(hull) <- c("X", "Y")
# how many data points make up the hull?
nrow(hull)
[1] 212
# return common rows between input and the hull
common <- inner_join(cur_df, hull)
> Joining, by = c("X", "Y")
# number of common rows
nrow(common)
[1] 0
My input consists of coordinates that have 8 digits but the output coordinates from the concave function have only 4 digits. Therefore, it is not possible to find the common rows (by the inner_join function) between input and output.
I don't know if this behavior is intended but I think it should not be the default.
Thank you!
> sessionInfo()
R version 4.0.0 (2020-04-24)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS High Sierra 10.13.6
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] dplyr_0.8.5 data.table_1.12.8 sf_0.9-3 concaveman_1.1.0
loaded via a namespace (and not attached):
[1] Rcpp_1.0.4.6 rstudioapi_0.11 magrittr_1.5 units_0.6-6 tidyselect_1.1.0 R6_2.4.1
[7] rlang_0.4.6 tools_4.0.0 grid_4.0.0 KernSmooth_2.23-17 e1071_1.7-3 DBI_1.1.0
[13] ellipsis_0.3.1 class_7.3-17 assertthat_0.2.1 tibble_3.0.1 lifecycle_0.2.0 crayon_1.3.4
[19] purrr_0.3.4 vctrs_0.3.0 curl_4.3 glue_1.4.1 V8_3.0.2 compiler_4.0.0
[25] pillar_1.4.4 classInt_0.4-3 jsonlite_1.6.1 pkgconfig_2.0.3
The text was updated successfully, but these errors were encountered:
First, thank you for creating this nice wrapper function! As the title already indicates, the function does not return the original coordinates. It seems that this is a rounding issue. Please see my example code which should illustrate the problem.
My input consists of coordinates that have 8 digits but the output coordinates from the concave function have only 4 digits. Therefore, it is not possible to find the common rows (by the inner_join function) between input and output.
I don't know if this behavior is intended but I think it should not be the default.
Thank you!
The text was updated successfully, but these errors were encountered: