怎么静音?

时间:2017-03-20 19:28:47

标签: r sapply

当条件没有发出警告时,我希望没有任何回报。我怎么能这样做?

d <- data.frame(a = sample(x = 1:110, size = 20), 
                 b = sample(x = 1:110, size = 20))

sapply(d$a, function(x) if(x>110 | x<1) warning("bad numeros"))

1 个答案:

答案 0 :(得分:2)

评论说,在这种情况下,真的不需要sapply。只需对整个矢量进行比较,如果发现任何不良数字,则发出警告。

对于单个列,您可以这样做:

if(any(d$a >110 | d$a < 1)) warning("bad numbers detected")

如果你想同时测试所有列,你可以简单地在比较中使用整个data.frame:

if(any(d > 110 | d < 1)) warning("bad numbers detected")

如果要测试data.frame中的多个但不是所有列,请使用相应的子集:

cols <- c("a", "b")
if(any(d[,cols] > 110 | d[,cols] < 1)) warning("bad numbers detected")