当条件没有发出警告时,我希望没有任何回报。我怎么能这样做?
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"))
答案 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")