如何在r中的包函数中添加进度条
How to add a progress bar to a package function in r
我是 运行 一个来自 landscapmetrics 包的移动 window 函数。这似乎需要一些时间,因为栅格很大。有一个进度条或类似的东西真的很有帮助。我如何在没有 for 循环或自编码函数的情况下编写这样的代码?我不知道如何提供示例栅格,但这是我的代码:
my.raster <- raster('forest2_nonforest1_min_extent.tif')
#specify window size
moving_window <- matrix(1,nrow=5,ncol=5)
#moving window analysis
tt <- window_lsm(my.raster,
window = moving_window,
level= "landscape",
what = c("lsm_l_ed"))
我需要可视化最后一个功能的进度(#moving window 分析)
不熟悉这个包,但是 window_lsm()
有一个参数 progress
,它将在 TRUE
时“打印进度报告”。
否则,据我所知,如果没有任何类型的迭代/循环,就不可能实现真正的进度条。我看到的另一种选择是查看 window_lsm()
的来源;找到最外层的循环(如果有的话);定义您自己的函数的本地版本;并在循环内插入一个递增的进度条(例如使用 progress
包)。 (显然,如果不查看许可/与软件包开发人员讨论,您不会想重新分发它。)
我想另一种选择是以某种方式估计操作可能需要多长时间,例如,根据光栅的大小,然后 运行 在并行过程中使用倒计时器?我的直觉是这很难实施,而且不是特别准确。
函数window_lsm()
在内部使用raster::focal()
,它本身不提供进度条。因此,如果不编写自己的 loop/moving window 函数,我认为这是不可能的,不幸的是。
如上所述,window_lsm()
中的进度参数仅指层和指标,而不是移动window。
我是 运行 一个来自 landscapmetrics 包的移动 window 函数。这似乎需要一些时间,因为栅格很大。有一个进度条或类似的东西真的很有帮助。我如何在没有 for 循环或自编码函数的情况下编写这样的代码?我不知道如何提供示例栅格,但这是我的代码:
my.raster <- raster('forest2_nonforest1_min_extent.tif')
#specify window size
moving_window <- matrix(1,nrow=5,ncol=5)
#moving window analysis
tt <- window_lsm(my.raster,
window = moving_window,
level= "landscape",
what = c("lsm_l_ed"))
我需要可视化最后一个功能的进度(#moving window 分析)
不熟悉这个包,但是 window_lsm()
有一个参数 progress
,它将在 TRUE
时“打印进度报告”。
否则,据我所知,如果没有任何类型的迭代/循环,就不可能实现真正的进度条。我看到的另一种选择是查看 window_lsm()
的来源;找到最外层的循环(如果有的话);定义您自己的函数的本地版本;并在循环内插入一个递增的进度条(例如使用 progress
包)。 (显然,如果不查看许可/与软件包开发人员讨论,您不会想重新分发它。)
我想另一种选择是以某种方式估计操作可能需要多长时间,例如,根据光栅的大小,然后 运行 在并行过程中使用倒计时器?我的直觉是这很难实施,而且不是特别准确。
函数window_lsm()
在内部使用raster::focal()
,它本身不提供进度条。因此,如果不编写自己的 loop/moving window 函数,我认为这是不可能的,不幸的是。
如上所述,window_lsm()
中的进度参数仅指层和指标,而不是移动window。