R 将列表对象中的NaN/Inf/NA替换为0

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] #

我在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]
#[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))