R 如何让Sappy哑口无言?

R 如何让Sappy哑口无言?,r,sapply,R,Sapply,我希望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")) d110 | x如前所述,在这种情况下,确实不需要sapply。只要对整个向量进行

我希望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"))

d110 | x如前所述,在这种情况下,确实不需要
sapply
。只要对整个向量进行比较,如果发现任何错误的数字,就给出警告

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

if(any(d$a >110 | d$a < 1)) warning("bad numbers detected")
if(任何(d$a>110 | d$a<1))警告(“检测到错误数字”)
如果要同时测试所有列,只需在比较中使用整个data.frame即可:

if(any(d > 110 | d < 1)) warning("bad numbers detected")
if(任何(d>110 | d<1))警告(“检测到错误数字”)
如果要测试data.frame中的多个但不是所有列,请使用适当的子集:

cols <- c("a", "b")
if(any(d[,cols] > 110 | d[,cols] < 1)) warning("bad numbers detected")
cols 110 | d[,cols]<1))警告(“检测到错误数字”)

如前所述,在这种情况下,确实不需要使用
sapply
。只要对整个向量进行比较,如果发现任何错误的数字,就给出警告

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

if(any(d$a >110 | d$a < 1)) warning("bad numbers detected")
if(任何(d$a>110 | d$a<1))警告(“检测到错误数字”)
如果要同时测试所有列,只需在比较中使用整个data.frame即可:

if(any(d > 110 | d < 1)) warning("bad numbers detected")
if(任何(d>110 | d<1))警告(“检测到错误数字”)
如果要测试data.frame中的多个但不是所有列,请使用适当的子集:

cols <- c("a", "b")
if(any(d[,cols] > 110 | d[,cols] < 1)) warning("bad numbers detected")
cols 110 | d[,cols]<1))警告(“检测到错误数字”)

对于本例,我认为您不应该使用
sapply
,而应该使用类似
if(any(d$a>110 | d$a<1))警告(“坏数字”)
的内容,如果您想测试多个/所有列,只需使用
if(any(d>110 | d<1))警告(“检测到坏数字”)
@docendodiscimus您应该把您的建议作为一个答案。对于这个例子,我认为您不应该使用
sapply
,而应该使用类似
if(any(d$a>110 | d$a<1))警告(“坏数字”)
的东西,如果您想测试几个/所有列,只需使用
if(any(d>110 | d<1))警告(“检测到错误的数字”)
@docendodiscimus您应该回答您的建议。