的參數名對於任意函數獲取的R功能
f <- function(x, y = 3){
z <- x + y
z^2
}
我希望能夠採取的f
> argument_names(f)
[1] "x" "y"
參數名這可能嗎?
的參數名對於任意函數獲取的R功能
f <- function(x, y = 3){
z <- x + y
z^2
}
我希望能夠採取的f
> argument_names(f)
[1] "x" "y"
參數名這可能嗎?
formalArgs
和formals
是在這種情況下有用的兩個功能。如果你只是想要參數名稱,那麼formalArgs
會更有用,因爲它只是給出名稱並忽略任何默認值。 formals
給出一個列表作爲輸出,並提供參數名稱作爲列表中元素的名稱和默認值作爲元素的值。
f <- function(x, y = 3){
z <- x + y
z^2
}
> formalArgs(f)
[1] "x" "y"
> formals(f)
$x
$y
[1] 3
我的第一個傾向是隻是建議formals
,如果你只是想在參數的名稱,你可以使用的名稱,如names(formals(f))
。 formalArgs
功能只是一個包裝,它可以幫助你做到這一點。
編輯:請注意,技術上原始函數沒有「形式」,所以如果在基元上使用此方法將返回NULL。解決方法是首先在args
中包裝函數,然後傳遞給formalArgs
。不管它是什麼,它都可以工作。
> # formalArgs will work for non-primitives but not primitives
> formalArgs(f)
[1] "x" "y"
> formalArgs(sum)
NULL
> # But wrapping the function in args first will work in either case
> formalArgs(args(f))
[1] "x" "y"
> formalArgs(args(sum))
[1] "..." "na.rm"
這不適用於例如'^'或'log':\ – MichaelChirico
@MichaelChiricoHmmm。看起來像任何只是一個.primitive調用的包裝都有同樣的問題。 – Dason
是啊我試圖找到所有基於一個參數的功能,並遇到了這個問題 - 所有好的只是原始包裝 – MichaelChirico
退房'?formals' – Dason
太棒了!兩者都有效。隨時回答。我會接受第一個。 – landau
幫助(「args」)或其中的一個功能。 – Roland