我正在尝试计算两个向量的和积,但其中一个有NA。
crossprod(c(4.5,4,4,3,NA), c(1,5,4,1,1))
在计算中,我想将NA视为零。但在原始数据框架中,我仍然希望将其保留为NA以进行进一步的数据处理。任何提示将不胜感激。
答案 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
不会修改它的参数。