3
我與NaN的/ INF/NA值R 2具有一個列表對象更換的NaN/INF/NA至0:在一個列表對象
dat <- list(a=matrix(c(2,0/0,10/0,NA),nrow=2), b=matrix(c(-3,0,NA,1),nrow=2))
如何可以取代的NaN/INF/NA元素爲0 ?
我與NaN的/ INF/NA值R 2具有一個列表對象更換的NaN/INF/NA至0:在一個列表對象
dat <- list(a=matrix(c(2,0/0,10/0,NA),nrow=2), b=matrix(c(-3,0,NA,1),nrow=2))
如何可以取代的NaN/INF/NA元素爲0 ?
我們可以通過遍歷的list
元素與lapply
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
replace
0非有限值,您也可以通過檢查做到這一點,如果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
或者一個行代碼作爲@ akrun的回答:
lapply(dat, function(x) replace(x, is.na(x%%1==0), 0))