簡體   English   中英

總結很多向量; 行或元素,但忽略NA值

[英]Summing lots of Vectors; row-wise or elementwise, but ignoring NA values

我正在嘗試創建一個新的向量,它是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

我希望結果是1,3,7,6。
我想我可以創建每個向量的新版本,其中我用0替換NA,但是當應用於35個向量時,這將是很多工作。 有一個簡單的功能可以幫助我嗎?

也可以使用rowSums函數:

rowSums( cbind (col1,col2,col3), na.rm=TRUE)
#[1] 1 3 7 6

?rowSums   # also has colSums described on same help page

首先將它們放在矩陣中:

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參數sum以便刪除NA值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM