2015-09-20 75 views
0

我想计算两个向量的总和乘积,但其中之一有NA。如何在R中处理crossprod中的缺失值?

crossprod(c(4.5,4,4,3,NA), c(1,5,4,1,1)) 

在计算,我想对待NA作为一个零。但在原始数据框架中,我仍然希望将其保留为NA以进行进一步的数据处理。任何暗示将不胜感激。

回答

0

如果你的十字架产品比之更复杂,你可以定义一个新的功能,它取代NA的参数:

crossprod.replacena <- function(x, y, val=0) { 
            crossprod(replace(x, is.na(x), val), 
              replace(y, is.na(y), val) 
           ) 
         } 

或者你可以拨打你的论点replace没有定义的功能,如replace不修改其参数。

3

可以使用sum功能,并告诉它忽略遗漏值:

sum(c(4.5,4,4,3,NA)*c(1,5,4,1,1), na.rm = TRUE) 
+0

非常感谢!这正是我需要的。 –

+0

@QYang我很困惑。如果这正是你需要的,你为什么不接受它? –