我有一个主要函数,它对某些数据执行一些各种复杂(且长时间运行)的计算,它使用 tidyverse / magrittr 中的管道执行这些步骤。我想要一个进度条来报告处理的阶段,但是,我不知所措。我查看了cli、progress和progressr软件包,从中我只能开始cli工作(从某种意义上说。
这是一个最小的例子:
\nlibrary(tidyverse)\nlibrary(cli)\n\nmain_fun <- function() {\n cli_progress_step(msg = "Running main function")\n tibble(a = 1:5) %>% \n fun1() %>% \n fun2() %>% \n fun3()\n}\n\nfun1 <- function(data) {\n cli_progress_step(msg = "Doing sub function 1")\n Sys.sleep(2)\n\n return(data)\n}\nfun2 <- function(data) {\n cli_progress_step(msg = "Doing sub function 2")\n Sys.sleep(1)\n\n return(data)\n}\nfun3 <- function(data) {\n cli_progress_step(msg = "Doing sub function 3")\n Sys.sleep(3)\n\n return(data)\n}\n\nmain_fun()\n#> \xe2\x84\xb9 Running main function\n#> \xe2\x84\xb9 Doing sub function 3\n#> \xe2\x84\xb9 …Run Code Online (Sandbox Code Playgroud) 我需要使用结构化文件名循环遍历许多文件.
它们的形式为'Mar00.sav','Sep00.sav','Mar01.sav'
目前我这样做;
Years = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17']
Run Code Online (Sandbox Code Playgroud)
哪个有效,但我想知道是否有更好的方法?
我尝试了范围,但 str(range(00,17))会掉落前导零...
我尝试编写一个函数来计算 R 中的第 n 个斐波那契数。我可以递归地执行此操作。
fibonacci = function(n){
if (n == 1) {return(1)}
if (n == 2) {return(2)}
return(fibonacci(n - 1) + fibonacci(n - 2))
}
Run Code Online (Sandbox Code Playgroud)
我在 R 中找不到任何示例,但是从其他语言的指南中我想出了以下内容。然而,它似乎并没有运行得更快。
fibonacci = function(n, lookup = NULL){
if (is.null(lookup)) {
lookup = integer(n + 1)
}
if (n == 1) {return(1)}
if (n == 2) {return(2)}
lookup[1] = 1
lookup[2] = 2
if (lookup[n - 1] == 0) {
lookup[n - 1] = fibonacci(n - 1, lookup)
}
if (lookup[n - 2] …Run Code Online (Sandbox Code Playgroud)