if/else 测试列中的任何行是否大于绝对值 (R studio)

if/else test if ANY row in a column is greater than an absolute value (R studio)

提问人:Larissa Cury 提问时间:9/20/2022 最后编辑:marc_sLarissa Cury 更新时间:9/25/2022 访问量:361

问:

我正在尝试测试列中的任何值/行是否大于绝对值 1。cooksd

if (any(lev$cooksd) > abs(-1)) {
  print('yey')
} else {
  print('no') 
}

警告消息:

In any(lev$cooksd) : 强制将“double”类型的参数强制转换为逻辑参数

但我不认为该功能正在完成这项工作......对此有什么想法吗?any()

提前致谢!

Obs:

数据如下所示:(前两行)

cooksd mdffits covtrace covratio leverage.o~1
 <dbl>   <dbl>    <dbl>    <dbl>        <dbl>
 0.0496  0.0478    0.0368     1.04        0.395
 0.0261  0.0251    0.0371     1.04        0.395

评论后编辑:

if (any(abs(lev$cooksd) > 1)) {
  print('yey')
} else {
  print('no') 
}
r if 语句 逻辑

评论

4赞 Rui Barradas 9/20/2022
括号位置错误,请尝试。any(lev$cooksd > 1)
0赞 Larissa Cury 9/20/2022
@RuiBarradas哦,是的,谢谢!我还注意到我也将 abs() 放在了错误的部分(编辑)谢谢!!

答:

0赞 Gordon Smyth 9/25/2022 #1

计算列值的最大值更简单、更高效、信息量更大:

max(lev$cooksd) > 1

除了显示最大值是多少(可能提供信息)之外,这种方法的速度是使用 any() 的 3 到 4 倍:

> x <- runif(1e8)
> system.time(any(x > 1))
   user  system elapsed 
   0.47    0.01    0.49 
> system.time(max(x) > 1)
   user  system elapsed 
   0.14    0.00    0.14