Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 对大量向量求和;行方式或元素方式,但忽略NA值_R_Vector_Sum_Na - Fatal编程技术网

R 对大量向量求和;行方式或元素方式,但忽略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

我试图创建一个新的向量,它是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,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该函数适用于一行。如果与大数据一起使用,速度也会快得多。