# Here is a data.frame:
x = data.frame(cbind(1:5, 1:5))
# Here is `integer(0)`
k = integer(0)
k
# For example, you could end up with integer(0) like this:
k = which(is.na(x[,1]))
k
# Now, substituting values in x by k (a null operation in this case) throws
# a warning:
x[k,1] = 5
Warning message:
In max(i) : no non-missing arguments to max; returning -Inf
我可以通过在x[k,1] = 5
之前检查以跳过k = integer(0)
的操作,或者通过将x
重新设置为矩阵而不是data.frame来避免警告。是否有更优雅的方式来避免警告?
(另外,警告的重点是什么?)
答案 0 :(得分:0)
这已在当前的R版本中修复,但我可以使用3.0.1重现。
抑制警告的最优雅方式是suppressWarnings
:
suppressWarnings({x[k,1] = 5})
但是,这会抑制表达式可能抛出的所有警告,因此它可能是危险的(取决于表达式),并且(更具体的)if
条件可能更可取。