Использование combn()
из базы R может быть немного проще и, вероятно, быстрее, чем загрузка дополнительных пакетов. Затем distm()
использует distGeo()
в качестве источника, поэтому использование последнего должно быть еще быстрее.
coords <- as.data.frame(coords) # this won't work with data.tables though
cbind(t(combn(1:4, 2)), unique(geosphere::distGeo(coords[combn(1:4, 2), ])))
# [,1] [,2] [,3]
# [1,] 1 2 111252.1
# [2,] 1 3 497091.1
# [3,] 1 4 897081.9
# [4,] 2 3 786770.1
# [5,] 2 4 400487.6
# [6,] 3 4 458780.1
Мы могли бы проверить это с помощью эталона.
Unit: microseconds
expr min lq mean median uq max neval cld
distm 555.690 575.846 597.7672 582.352 596.1295 904.718 100 b
distGeo 426.335 434.372 450.0196 441.516 451.8490 609.524 100 a
Выглядит хорошо.
inode для / всегда будет 2, если это будет корневой каталог файловой системы, но можно быть chrooted в полной файловой системе. Если это просто chroot (и не некоторая другая виртуализация), Вы могли бы работать, монтируют и сравнивают смонтированные файловые системы с тем, что Вы видите. Проверьте, что каждая точка монтирования имеет inode 2.
В системах BSD (сверяются с uname-a), должен всегда присутствовать proc. Проверьте, если dev/inode пара/proc/1/exe (используют статистику на том пути, она не будет следовать за символьной ссылкой текстом, но базовым рычагом) соответствует/sbin/init.
Проверка корня для inode № 2 является также хорошей.
В большинстве других систем, пользователь root может узнать намного быстрее путем попытки fchdir повреждающего корень приема. Если это идет куда-нибудь, Вы находитесь в chroot тюрьме.
Я предполагаю, что это зависит, почему Вы могли бы быть в chroot, и вошло ли какое-либо усилие в маскировку его.
я проверил бы/proc, эти файлы являются автоматически сгенерированными файлами информации о системе. Ядро заполнит их в корневой файловой системе, но возможно, что они не существуют в chroot файловой системе.
, Если/proc корневой файловой системы был связан с/proc в chroot, то вероятно, что существуют некоторые несоответствия между той информацией и chroot средой. Проверьте/proc/mounts, например.
Similrarly, проверьте/sys.
Предотвращение материала как этот является самым главным. Если это - Ваш код, это, как предполагается, работает в chroot, имеет его, установил флаг на запуске. Если Вы взламываете, взлом: проверьте на несколько общих вещей в известных местоположениях, считайте файлы в / и т.д., чем-то в/dev.