如何处理R中的crossprod中的缺失值?

时间:2015-09-20 04:31:47

标签: r na cross-product

我正在尝试计算两个向量的和积,但其中一个有NA。

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

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

2 个答案:

答案 0 :(得分:3)

您可以使用sum函数并告诉它忽略缺失值:

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

答案 1 :(得分:0)

如果你的叉积比和一个更复杂,你可以定义一个新的函数来代替参数中的NA:

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

或者你可以在你的参数上调用replace而不定义函数,因为replace不会修改它的参数。