考慮geom_smooth()從ggplot2哪里可以設定是否要查看置信區間(se引數)以及區間的寬度(level引數)。例如:
df <- data.frame(x= rnorm(100), y= rnorm(100))
library(ggplot2)
ggplot(df, aes(x ,y)) geom_smooth(se= TRUE, level= .95)
我認為不需要兩個單獨的引數:如果我們設定一些,level我們顯然希望看到置信區間。所以在這種情況下,這個se論點是多余的。在另一方面,如果我們選擇se= FASLE的level說法是多余的。因此,對我來說,在一個論點中總結這兩種資訊是很直觀的。所以我對函式的定義是這樣的:
my_smooth <- function(lev, ...){
if(is.null(lev)){
geom_smooth(se= FALSE)
} else{
geom_smooth(se= TRUE, level= lev)
}
}
所以my_smooth()有一個引數,我們可以決定不通過選擇 NULL 來查看置信區間,或者我們輸入我們想要查看的級別。當然,lev= .95如果我們愿意,我們可以添加為默認值。
在我看來,這種方法非常簡單,并且避免了像geom_smooth(se= FALSE, level= .95). NULL在函式引數中使用作為選項是否有缺點my_smooth()?即使用 NULL 作為“沒有意識到這個論點”是不好的做法嗎?
編輯
問題不是關于geom_smooth(). 我在一個包上作業,我想以這種方式使用 NULL。用一個眾所周知的函式來解釋我的意思更容易。
uj5u.com熱心網友回復:
您的my_smooth函式需要用戶指定lev. 該geom_smooth方法允許用戶接受se和level引數的默認值,或者只更改默認值之一。
se和level引數的定義也更容易記錄。你的lev論點意味著兩件事:是否繪制樂隊,以及如何繪制它。您很幸運,在這種情況下,“不繪制它”的選擇不需要數字引數,但在一個引數表示二元選擇的其他情況下,其他引數可能適用于這兩種情況。該geom_smooth選擇是在其引數有明確的含義,這些其他情況一致。
一個引數有時無關緊要的事實是一個很小的成本:您不必為每個引數(精神上)付費,而是為每個決定付費。您仍在做出兩個決定,因此您的解決方案并不便宜。
在其他情況下,一個引數比兩個好。例如,R 允許您根據另一個引數的值指定一個引數的默認值。該dgamma/rgamma等等功能利用此功能允許您指定rate或scale分布的,但不能同時(因為rate*scale = 1)。這被認為很方便,因為有些人習慣于與一個人一起作業,而其他人則與另一個人一起作業,但我認為它只會讓每個人都感到困惑,使檔案變得更加復雜,并讓人們想知道為什么rnorm不允許您指定方差而不是sd?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/363893.html
