R包amt:如何为不同个体生成匹配其观测数的家域随机点位
解决方案
你需要使用purrr::map2()同时遍历resample和hr1两个列表列,获取每个个体重采样后的观测行数作为随机点生成数量,修改后的代码如下:
# 计算个体家域内的随机点,数量与重采样后的观测数一致 trk_id <- trk2 %>% mutate(random_used = map2(resample, hr1, function(rs, hr) { # 取当前个体重采样后的观测数量作为随机点生成数量 n_point <- nrow(rs) hr %>% random_points(n = n_point) }))
逻辑说明
map2()支持同时迭代两个长度相同的列表,每次迭代会分别传入当前个体的重采样轨迹数据rs和家域等值线对象hr- 通过
nrow(rs)直接读取对应个体重采样后的有效观测数,作为random_points()的n参数,即可实现每个个体的随机点数量和自身观测数完全匹配
额外注意事项
你原有代码中计算KDE家域的参数名存在拼写错误,levles应为levels,否则95%家域阈值无法生效,建议修正为:
trk2 <- trk1 %>% mutate(hr = map(resample, function(x) { x %>% hr_kde(levels = 0.95) }))
内容的提问来源于stack exchange,提问作者Sas
相关产品推荐
相关产品推荐

