[英]Replacing infinite values in a matrix with column averages in R
讓我有這樣一個3x4矩陣(比方說m):
4 inf 12 6
1 8 inf 42
5 1 3 11
我想用列平均值替換無限單元格。 我怎么能用R做到這一點?
所以結果矩陣必須是:
4 4.5 12 6
1 8 7.5 42
5 1 3 11
我們用' NA
'替換'Inf'值后的'm1'的colMeans
,然后通過創建邏輯索引('i1')將這些值分配給'Inf'值的位置
cm <- colMeans(replace(m1, is.infinite(m1), NA), na.rm = TRUE)
i1 <- is.infinite(m1)
m1[i1] <- cm[col(m1)][i1]
m1
# [,1] [,2] [,3] [,4]
#[1,] 4 4.5 12.0 6
#[2,] 1 8.0 7.5 42
#[3,] 5 1.0 3.0 11
或者這可以使用zoo
na.aggregate
在一行中完成
zoo::na.aggregate(replace(m1, is.infinite(m1), NA))
m1 <- structure(c(4, 1, 5, Inf, 8, 1, 12, Inf, 3, 6, 42, 11), .Dim = 3:4)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.