【问题标题】:Ifelse function inside of a for loop not producing intended resultsfor 循环内的 ifelse 函数未产生预期结果
【发布时间】:2021-05-03 21:56:16
【问题描述】:

我可能在做一些愚蠢的事情。但是,我有一个长度为 n 的二进制向量。然后我尝试根据从向量中选择的随机值应用 ifelse 函数。

y <- sample(0:1, 500, replace = TRUE)
y

p=0.2

randomcells <- sample(1:length(y), 20)
randomcells

for (i in 1:length(y)){
  if(!i %in% randomcells){
    next
  }
  print(y[i])
  print(ifelse(y[i]<-1,log((1-p)/p),log((p/1-p))))
}
}

我希望运行此代码值为y[i] = 0 以返回负值,否则返回正值。不幸的是,无论y[i] 的值如何,它目前都只返回正值。非常感谢任何帮助。

完成此操作后,我希望将正值保存在一个向量中,将负值保存在另一个向量中,但由于当前的问题,这些步骤被证明是困难的。

非常感谢您提供的任何帮助。
山姆

【问题讨论】:

  • y[i]&lt;-1 可能不是您所期望的。试试y[i] &lt; -1

标签: r if-statement


【解决方案1】:

您还拥有log((1-p)/p),因为您在ifelse 语句中将y[i] &lt;- 1 作为条件测试,该条件强制转换为逻辑TRUE

ifelse(y[i]<-1,log((1-p)/p),log((p/1-p)))

我猜你可能需要什么

ifelse(y[i],log((1-p)/p),log((p/1-p)))

ifelse(y[i]==1,log((1-p)/p),log((p/1-p)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2013-09-13
    相关资源
    最近更新 更多