索引data.frame由整数(0)替换,但避免警告

时间:2014-08-14 13:32:15

标签: r indexing

# 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来避免警告。是否有更优雅的方式来避免警告?

(另外,警告的重点是什么?)

1 个答案:

答案 0 :(得分:0)

这已在当前的R版本中修复,但我可以使用3.0.1重现。

抑制警告的最优雅方式是suppressWarnings

suppressWarnings({x[k,1] = 5})

但是,这会抑制表达式可能抛出的所有警告,因此它可能是危险的(取决于表达式),并且(更具体的)if条件可能更可取。