r - IF-Then Error in R哪里貌似没问题?
问题描述
我正在尝试使用向量中的元素来执行 if-then 语句,但由于某种原因,我一直遇到以下错误:
“if (xd[2] <= a) { 中的错误:需要 TRUE/FALSE 的缺失值”
我不确定为什么会不断出现这种情况,因为与那行代码唯一不同的地方似乎是我使用的是 xd[2] 而不是 xd[1]。我用 xd[1] 但不是 xd[2] 得到了我想要的结果。条件似乎也满足了。
reset1 = {
a = 0.3 #lower bound of belief
b = 0.9 #upper bound of belief
A = 5
w = c(1,2)
xd = c(1,2)
w[1] = 5 #cost of abatement/effort for Driver1
xd[1] = 0.3
w[2] = 3 #cost of abatement/effort for Driver2
xd[2] = 0.3
expfine1 = function(xd,A,a,b){if(xd[1]<=a){A} else if(a<xd[1] & xd[1]<b){(((b-xd[1])/(b-a))*A)} else if(xd[1]>b){0}}
expfine1(xd[1],A,a,b)
expcost1 = function(xd){proba1(xd[1])*expfine1(xd[1],A,a,b)}
expcost1(xd[1])
expfine2 = function(xd,A,a,b){if(xd[2]<=a){A} else if(a<xd[2] & xd[2]<b){(((b-xd[2])/(b-a))*A)} else if(xd[2]>b){0}}
expfine2(xd[2], A, a, b)
expcost2 = function(xd){proba2(xd[2])*expfine2(xd[2],A,a,b)}
expcost2(xd[2])
解决方案
您应该使用矢量化ifelse()
的函数:
expfine1 <- function(xd,A,a,b) {
ifelse(xd <= a, A,
ifelse(a < xd & xd < b, A*(b-xd) / (b-a),
ifelse(xd > b, 0, NA)))
}
expfine1(xd,A,a,b)
推荐阅读
- javascript - 单击导航项锚链接后关闭响应式导航
- oop - 对象作为 lisp 中自身的参数
- vector - 转换为 TFIDF 值向量的相似文档如何在向量空间中查看
- linux - 提交openwrt页面后如何重启服务?
- php - 如何根据 Stripe API 错误响应执行任务
- python - TypeError:“NoneType”和“str”的实例之间不支持“<”
- visual-studio-code - IoT Edge 集成的 VS Code 命令不起作用
- vba - 将参数从 Excel 工作表移动到 Excel 宏或 SAS 插件
- typescript - PrimeNG Treetable - 获取节点的子节点和父节点
- square - Square Connect 检索交易