R 对大量向量求和;行方式或元素方式,但忽略NA值
我试图创建一个新的向量,它是35个其他向量的总和。问题是有很多NA值,但对于这个特殊用途,我想将它们视为零。添加向量将不起作用,因为如果35个向量中的任何一个包含NA,则结果为NA。以下是问题的示例:R 对大量向量求和;行方式或元素方式,但忽略NA值,r,vector,sum,na,R,Vector,Sum,Na,我试图创建一个新的向量,它是35个其他向量的总和。问题是有很多NA值,但对于这个特殊用途,我想将它们视为零。添加向量将不起作用,因为如果35个向量中的任何一个包含NA,则结果为NA。以下是问题的示例: col1<-c(NA,1,2,3) col2<-c(1,2,3,NA) col3<-c(NA,NA,2,3) Sum<-col1+col2+col3 Sum # [1] NA NA 7 NA col1首先将它们放入矩阵中: apply(cbind(col1,col2,c
col1<-c(NA,1,2,3)
col2<-c(1,2,3,NA)
col3<-c(NA,NA,2,3)
Sum<-col1+col2+col3
Sum
# [1] NA NA 7 NA
col1首先将它们放入矩阵中:
apply(cbind(col1,col2,col3),1,sum,na.rm = TRUE)
[1] 1 3 7 6
您可以使用R的内置文档阅读这里的每个函数:?apply
,?cbind
cbind
代表“列绑定”:它将多个向量或数组“按列”绑定到单个数组中:
cbind(col1,col2,col3)
col1 col2 col3
[1,] NA 1 NA
[2,] 1 2 NA
[3,] 2 3 2
[4,] 3 NA 3
apply
,对矩阵的行或列应用函数(sum
)。这允许我们将na.rm=TRUE
参数用于求和
,以便删除na值。也可以使用行和
函数:
rowSums( cbind (col1,col2,col3), na.rm=TRUE)
#[1] 1 3 7 6
?rowSums # also has colSums described on same help page
这管用!我似乎问了一个相当基本的问题,但如果您能添加一两个链接来帮助解释此代码的工作原理,我将不胜感激?我是指出现在列列表和求和函数之间的1。啊哈!行,而不是列。(顺便说一句,我问之前确实读过那篇文章,但我想不出来)很好!这样,我就不必告诉Apply该函数适用于一行。如果与大数据一起使用,速度也会快得多。