R语言如何生成x[i]大于0时对应位置为TRUE的逻辑向量y
错误原因分析
- for循环内的赋值符号书写错误:你把R的赋值运算符
<-误写为减号-,导致循环内仅执行了逻辑判断操作,没有将判断结果赋值给y[i],所以y一直保留初始化时的全FALSE状态。 - 后续尝试的
y-x>0写法逻辑有误:这里同样误用了减号,且无需基于初始化的y做运算,直接对原向量x做判断即可。
解决方法
方法1:使用R向量化运算(推荐)
R本身支持向量化逻辑判断,不需要手动写for循环,一行代码即可实现需求:
x <- c(-1,0,1,2) y <- x > 0
运行后得到的y为 FALSE FALSE TRUE TRUE,完全符合要求。
方法2:修正后的for循环实现
如果需要用for循环实现,仅需修正循环内的赋值符号即可:
x <- c(-1,0,1,2) y <- logical(length(x)) for (i in 1:length(x)){ y[i] <- x[i] > 0 }
内容的提问来源于stack exchange,提问作者Magnus Moller
相关产品推荐
相关产品推荐

