use*_*414 5 r user-defined-functions
我正在尝试在 r 中编写一个函数,其中包含带有三个选项的命名参数。(我想做的是找到正态曲线的右尾部、左尾部或两个尾部的面积。)这可能吗?我已经想出了这个,但是当我尝试使用时出现错误right=BOTH.
st.pnorm<-function(x,\xc2\xb5,\xc3\xb8,right=c(\'TRUE\',\'FALSE\',\'BOTH\')){  \n  if (right==FALSE) return({pnorm((x-\xc2\xb5)/\xc3\xb8)})  \n  if (right==TRUE) return({1-(pnorm((x-\xc2\xb5)/\xc3\xb8))})  \n  if (right==BOTH) return({x*2})  \n}   \nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\nst.pnorm(19.4,11,8.4,right=\'BOTH\')
\n
\n st.pnorm(19.4, 11, 8.4, right = "BOTH") 中的错误:
\n 未找到对象 \'BOTH\'
(我知道 x*2 不正确,但我想看看在实际编写代码之前是否可以使其在结构上工作。)
\nst.pnorm<-function(x,\xc2\xb5,\xc3\xb8,right=TRUE){  \n     if (right==FALSE) return({pnorm((x-\xc2\xb5)/\xc3\xb8)})  \n     if (right==TRUE) return({1-(pnorm((x-\xc2\xb5)/\xc3\xb8))})  \n     if (right=="BOTH") return({x*2})  \n } \nRun Code Online (Sandbox Code Playgroud)\n\nTRUE并且FALSE应该用引号引起来,而BOTH确实需要,因此if (right=="BOTH"). 此外,right=TRUE您还向TRUE.
编辑
\n\n正如 @KonradRudolph 在评论中指出的那样,该if语句正在检查括号内的内容TRUE是否是。如果是,TRUE则它将执行,否则将跳过。因此,上面right的TRUEasFALSE可以重写为:
st.pnorm<-function(x,\xc2\xb5,\xc3\xb8,right=TRUE){  \n     if (!right) return({pnorm((x-\xc2\xb5)/\xc3\xb8)})  \n     if (right) return({1-(pnorm((x-\xc2\xb5)/\xc3\xb8))})  \n     if (right=="BOTH") return({x*2})  \n }  \nRun Code Online (Sandbox Code Playgroud)\n\n其中!充当非运算符。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           10260 次  |  
        
|   最近记录:  |