'sum`的经典案例返回NA,因为它没有对NA进行求和

时间:2014-06-15 18:08:14

标签: r

我正在尝试在函数中使用sum,但结果是NA,我认为这可能是由于整数溢出造成的。但我使用的数字类是数字。

该功能最简单

sum((columnA-columnB)^2)

columnA的值为0.1376146,而columnB的值为0.272

是小数位的不同长度吗?我知道如何更改显示的内容,但我不确定这会改变R用于sum的内容。

1 个答案:

答案 0 :(得分:10)

按照约书亚·乌尔里希的评论,在说你有一些溢出问题之前,你应该回答这些问题:

  1. 你总结了多少元素? R可以处理大量条目
  2. 你的载体中的值有多大?再一次,R可以处理相当大的数字
  3. 你在计算整数或浮点数吗?如果要对浮点数进行求和,则无法整数溢出(浮点数不是整数)
  4. 您的数据中是否有NA个?如果您对NA存在的任何内容求和,结果将为NA,除非您正确处理它。
  5. 那说,有些解决方案:

    • 使用sum(..., na.rm=T)忽略对象中的NA(这是一个简单的解决方案)
    • 仅汇总非NA条目:sum(yourVector[!is.na(yourVector)](不那么简单)
    • 如果您要对数据框中的列进行求和,请在求和之前对数据框进行子集化:sum(subset(yourDataFrame, !is.na(columnToSum))[columnToSum])(这就像使用大炮杀死蚊子一样)