R 将列表对象中的NaN/Inf/NA替换为0
我在R中有一个具有NaN/Inf/NA值的列表对象:R 将列表对象中的NaN/Inf/NA替换为0,r,R,我在R中有一个具有NaN/Inf/NA值的列表对象: dat <- list(a=matrix(c(2,0/0,10/0,NA),nrow=2), b=matrix(c(-3,0,NA,1),nrow=2)) dat我们可以通过使用lappy lapply(dat, function(x) replace(x, !is.finite(x), 0)) # [,1] [,2] #[1,] 2 0 #[2,] 0 0 #$b # [,1] [,2] #
dat <- list(a=matrix(c(2,0/0,10/0,NA),nrow=2), b=matrix(c(-3,0,NA,1),nrow=2))
dat我们可以通过使用lappy
lapply(dat, function(x) replace(x, !is.finite(x), 0))
# [,1] [,2]
#[1,] 2 0
#[2,] 0 0
#$b
# [,1] [,2]
#[1,] -3 0
#[2,] 0 1
您也可以通过检查x%%1==0
:
ls <- unlist(dat)
ls[is.na(ls%%1==0)] <- 0
relist(ls, skeleton = dat)
# $a
# [,1] [,2]
# [1,] 2 0
# [2,] 0 0
# $b
# [,1] [,2]
# [1,] -3 0
# [2,] 0 1
lapply(dat, function(x) replace(x, is.na(x%%1==0), 0))