計算 tidyverse 函式
到目前為止我所知道的
我想檔案會告訴我們,例如:library(tidyverse); ?summarise將.groups引數顯示為“實驗性”。
假設函式/引數是“穩定的”,除非它被明確指定為“實驗性”、“不推薦使用”或“取代”是正確的,還是有更準確/更簡單的方法來確定它是否“穩定”?

背景
如果相關,我試圖解決的問題是一位朋友抱怨偶爾不推薦使用的 tidyverse 功能需要閃亮的應用程式維護。所以我想建議他們檢查他們未來作業中的“穩定”功能/引數,以盡量減少這種維護。就在他們這樣做的最簡單/最明智的方法之后。
uj5u.com熱心網友回復:
一個潛在的解決方案是使用生命周期包中的lint_tidyverse_lifecycle()函式來檢查包/腳本以識別“不穩定”函式,例如
(在 Rstudio 中):
library(lifecycle)
lint_tidyverse_lifecycle()
就我而言,這給了我大量需要糾正/更新/修復的不穩定函式:

其中大部分都是非常簡單的更改(即dplyr::sample_n()-> dplyr::slice_sample()),一旦解決了所有問題,腳本中使用的所有 tidyverse 函式都將“穩定”。
uj5u.com熱心網友回復:
有關除錯代碼,請參閱lint_lifecycle,它在檔案中搜索匹配項。要找到函式的生命周期(這里專門針對 tidyverse),我們可以創建一個自定義函式。這些方法都沒有識別像.groups中的實驗論點summarise。然后它可能會導致以后令人沮喪的除錯程序。對于這些功能,我會考慮找到一個穩定的替代方案,例如 base R aggregate。
f <- function(type = NULL){
check_pkgs <- Vectorize(lifecycle:::pkg_lifecycle_statuses, "package")
pkgs <- tidyverse::tidyverse_packages()
l <- check_pkgs(pkgs)
l <- l[lapply(l, length) > 0]
df <- data.frame(pkg = unlist(l[seq.int(1, length(l), 3)], use.names = F),
fun = unlist(l[seq.int(2, length(l), 3)], use.names = F),
cycle = unlist(l[seq.int(3, length(l), 3)], use.names = F))
if(!is.null(type)) subset(df, cycle == type) else df
}
# many functions are "experimental".
f("experimental")
對于非 tidyverse 函式,我們可以替換pkgs <- tidyverse_packages()為
att <- .packages()
pkgs <- att[!att %in% rownames(installed.packages(priority="base"))]
如果情況需要,我們可以通過查找來進行一些手動搜索
needles <- f()$fun
haystack <- rstudioapi::getActiveDocumentContext()[["contents"]]
lifecycle順便說一句,還有一些階段(不再推薦)仍在 tidyverse 檔案中使用。選擇被取代、棄用、質疑、失效、實驗、軟棄用。進一步的警告正在成熟和退休。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/369338.html
上一篇:如何在`survminer`包的`ggcompetingrisks`中用`geom_errorbar`替換默認的`geom_ribbon`?
