Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
移除NA和x27;在R中添加时为s_R_Add_Na - Fatal编程技术网

移除NA和x27;在R中添加时为s

移除NA和x27;在R中添加时为s,r,add,na,R,Add,Na,我尝试在R中添加两个矩阵,我想将任何NA都视为0。我知道我总是可以这样做: ifelse(is.na(A), 0, A) + ifelse(is.na(B), 0, B) 但似乎应该有一种更优雅的方式来做到这一点。例如,是否有某种方法将na.rm参数提供给+函数?假设“A”和“B”具有相同的维度 `dim<-`(colSums(rbind(c(A), c(B)), na.rm=TRUE), dim(A)) # [,1] [,2] [,3] [,4] #[1,] 4

我尝试在R中添加两个矩阵,我想将任何NA都视为0。我知道我总是可以这样做:

ifelse(is.na(A), 0, A) + ifelse(is.na(B), 0, B)
但似乎应该有一种更优雅的方式来做到这一点。例如,是否有某种方法将na.rm参数提供给+函数?

假设“A”和“B”具有相同的维度

`dim<-`(colSums(rbind(c(A), c(B)), na.rm=TRUE), dim(A))
 #      [,1] [,2] [,3] [,4]
 #[1,]    4    7    6    6
 #[2,]    5    7    2    4
 #[3,]    8    9    6    1
 #[4,]    4    2    5    5
或者,如果有多个数据集,我们可以将其放在列表中并使用
Reduce

 Reduce(`+`, lapply(list(A,B), function(x) replace(x, is.na(x), 0)))
另一个紧凑的选择是使用
qdap

library(qdap)
NAer(A)+NAer(B)
对于多个数据集

Reduce(`+`, lapply(list(A,B), NAer))
数据
set.seed(324)
A假设“A”和“B”具有相同的尺寸

`dim<-`(colSums(rbind(c(A), c(B)), na.rm=TRUE), dim(A))
 #      [,1] [,2] [,3] [,4]
 #[1,]    4    7    6    6
 #[2,]    5    7    2    4
 #[3,]    8    9    6    1
 #[4,]    4    2    5    5
或者,如果有多个数据集,我们可以将其放在列表中并使用
Reduce

 Reduce(`+`, lapply(list(A,B), function(x) replace(x, is.na(x), 0)))
另一个紧凑的选择是使用
qdap

library(qdap)
NAer(A)+NAer(B)
对于多个数据集

Reduce(`+`, lapply(list(A,B), NAer))
数据
set.seed(324)

A您可以尝试从
car
软件包中重新编码

A <- matrix(c(1,NA,5,9,3,NA), 2)
B <- matrix(c(NA,10,3,NA,21,3), 2)

library(car)
Reduce("+", lapply(list(A, B), recode, "NA=0"))
#      [,1] [,2] [,3]
# [1,]    1    8   24
# [2,]   10    9    3

A您可以从
car
软件包中尝试
recode

A <- matrix(c(1,NA,5,9,3,NA), 2)
B <- matrix(c(NA,10,3,NA,21,3), 2)

library(car)
Reduce("+", lapply(list(A, B), recode, "NA=0"))
#      [,1] [,2] [,3]
# [1,]    1    8   24
# [2,]   10    9    3
A