這不是一個比jkt更好的答案,但無論如何我仍然在嘲諷,因爲AK88的findAllFun
讓我很感興趣,以此來尋找可能在搜索路徑中加載的所有功能(儘管應該指出的是,AK88的功能似乎返回庫中的名稱空間中具有函數名稱的所有包)。
無論如何,這裏是一個函數,它將返回一個包含所需名稱函數的包名稱向量。最重要的是,它按照搜索路徑的順序排列軟件包名稱。這意味着如果你只輸入function_name
,函數遇到的第一個包就是結果中的第一個包。
locate_function <- function(fun, find_in = c("searchpath", "library")){
find_in <- match.arg(arg = find_in,
choices = c("searchpath", "library"))
# Find all libraries that have a function of this name.
h <- help.search(pattern = paste0("^", fun, "$"),
agrep = FALSE)
h <- h$matches[,"Package"]
if (find_in == "library") return(h)
# List packages in the search path
sp <- search()
sp <- sp[grepl("^package", sp)]
sp <- sub("^package[:]", "", sp)
# List the packages on the search path with a function named `fun`
# in the order they appear on the search path.
h <- h[h %in% sp]
h[order(match(h, sp, NULL))]
}
## SAMPLE OUTPUT
library(dplyr)
library(MASS)
locate_function("select")
# [1] "MASS" "dplyr"
## Unload the dplyr package, then reload it so.
## This makes it appear BEFORE MASS in the search path.
detach("package:dplyr", unload = TRUE)
library(dplyr)
locate_function("select")
# [1] "dplyr" "MASS"
它還包含一個選項,可讓您看到包含所需名稱的函數的所有包(即使是未加載的包)。
locate_function("select", find_in = "library")
# [1] "dplyr" "raster" "MASS"
你嘗試'findAllFun < - 函數(f){ ħ< - help.search(paste0( 「^」,F, 「$」),AGREP = FALSE) H $比賽[」包「] } findAllFun(」qplot「)'from https://stackoverflow.com/questions/10553755/name-of-a-package-for-a-given-function-in-r – AK88
如果你想要使用一個特定的函數,你可以使用'package :: function',通常這是你上次加載的包的功能,我認爲。你也可以輸入函數名,你會看到它來自環境的地方(例如用'select',你得到'') –
Cath
@ AK88'findAllFun(「select」)'返回'「dplyr」「MASS」',這對我沒有太大幫助 –