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

How to handle missing values in crossprod in R?

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

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

在计算的时候,我想把NA当成零。但是在原始数据框中,我仍然想将其保留为 NA 以进行进一步的数据处理。任何提示将不胜感激。

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

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

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

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

或者您可以在不定义函数的情况下对参数调用 replace,因为 replace 不会修改其参数。