0

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

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

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

4

2 回答 2

3

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

sum(c(4.5,4,4,3,NA)*c(1,5,4,1,1), na.rm = TRUE)
于 2015-09-20T04:42:13.253 回答
1

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

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

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

于 2015-09-20T04:43:48.173 回答