在R中使用if else语句

问题描述 投票:1回答:2

我有2列

lower=rnorm(10,0,1)
upper=rnorm(10,1,1)

dd=data.frame(lower,upper)

我想知道是否每行,低于<0.5和高于1.我是使用for循环完成的,如下所示,

cc=c()
for(i in 1: 10 ){
  cc[i]= ifelse(  (  dd$upper[i] > 1 && dd$lower[i] < 0.5  ),1,0
  )
}

但我想使用一个合适的应用函数来做到这一点。由于数据在数据框中,我尝试使用apply函数。这是我的代码,

apply(dd , 1, function (i,j) {ifelse( (dd$i> 0.5 && dd$j<0.5) ,0,1 )

}
  )

我得到NA了。如果有人帮我弄清楚错误,这真的很有帮助

谢谢

r if-statement apply
2个回答
4
投票

我认为与您尝试过的方法相比,下面的解决方案要容易得多。看一看

set.seed(10)
lower=rnorm(10,0,1)
upper=rnorm(10,1,1)

dd=data.frame(lower,upper)

dd$flag<-ifelse((dd$lower < 0.5 & dd$upper > 1),1,0)

这将为您提供所需的输出。


1
投票

错误在于定义FUN中函数参数apply的输入。将此输入视为完整数组而不是数组的各个元素。

set.seed(10)
lower <- rnorm(10,0,1)
upper <- rnorm(10,1,1)
dd <- data.frame(lower,upper)
apply(dd, 1, FUN=function(x){ifelse(x[1] < 0.5 && x[2] > 1, 1, 0)})
[1] 1 1 0 1 1 1 0 0 1 1

或者,您也可以这样做

apply(dd , 1, FUN = function (x) {ifelse(x["lower"] < 0.5 && x["upper"] > 1, 1, 0)})
© www.soinside.com 2019 - 2024. All rights reserved.