gpt4 book ai didi

r - r 中用户定义函数中的逻辑参数

转载 作者:行者123 更新时间:2023-12-04 02:17:02 25 4
gpt4 key购买 nike

我正在尝试在 r 中编写一个函数,其中包含一个具有三个选项的命名参数。 (我想要做的是找到正态曲线右尾、左尾或双尾的区域。)这可能吗?我想出了这个,但是当我尝试使用 right=BOTH 时出现错误.

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,right='BOTH')
Error in st.pnorm(19.4, 11, 8.4, right = "BOTH") :
object 'BOTH' not found



(我知道 x*2 是不正确的,但我想在我实际编写代码之前看看我是否可以让它在结构上工作。)

最佳答案

st.pnorm<-function(x,µ,ø,right=TRUE){  
if (right==FALSE) return({pnorm((x-µ)/ø)})
if (right==TRUE) return({1-(pnorm((x-µ)/ø))})
if (right=="BOTH") return({x*2})
}
TRUEFALSE应该用引号括起来,而 BOTH确实需要,因此 if (right=="BOTH") .还有 right=TRUE您正在为 TRUE 声明默认值.

编辑

正如@KonradRudolph 在评论中指出的那样, if语句正在检查括号内的内容是否是 TRUE或不。如果是 TRUE然后它会 Action ,否则它会跳过。因此作为 right承担 TRUEFALSE以上可以改写为:
st.pnorm<-function(x,µ,ø,right=TRUE){  
if (!right) return({pnorm((x-µ)/ø)})
if (right) return({1-(pnorm((x-µ)/ø))})
if (right=="BOTH") return({x*2})
}

哪里 !充当 not 运算符。

关于r - r 中用户定义函数中的逻辑参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33188557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com