我想在r中編寫一個包含三個選項的命名參數的函數。 (我想要做的是在正常曲線的右尾部分,左尾部或兩個尾部找到這個區域)。這可能嗎?我已經提出了這個問題,但是當我用right=BOTH
嘗試時出現錯誤。在用戶定義函數中的邏輯參數r
st.pnorm<-function(x,µ,ø,right=c('TRUE','FALSE','BOTH')){
if (right==FALSE) return({pnorm((x-µ)/ø)})
if (right==TRUE) return({1-(pnorm((x-µ)/ø))})
if (right==BOTH) return({x*2})
}
st.pnorm(19.4,11,8.4,右= 'BOTH')
錯誤st.pnorm(19.4,11,8.4,右= 「兩者」):
對象既有」未找到
(我知道X * 2不正確的,但我想看看我是否能得到這個工作,結構之前,我其實寫的代碼。)
'TRUE'不符合邏輯,與TRUE不同,但可強制爲TRUE。同上「錯誤」,但不適用於「兩種」。 –
'identical(「TRUE」,TRUE)#[1] FALSE' –
我認爲你已經對技術問題有了很好的回答。實際上,當你做混合布爾值和字符串等奇怪的事情時,我認爲這是一個很好的指示,可以做不同的事情。你的函數代碼可能更清晰更直接,如果不是''''''''''''''''''''''而不是''''''''''''。孤立地說,'right =「BOTH」'沒有多大意義,它只有在大寫字母的唯一原因是因爲TRUE和FALSE在布爾值時不是字符串而是上限...... – Gregor