gpt4 book ai didi

用R中的列平均值替换矩阵中的无限值

转载 作者:行者123 更新时间:2023-12-04 11:58:24 26 4
gpt4 key购买 nike

让我有这样一个 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,然后通过创建逻辑索引将这些值分配给 'Inf' 值所在的位置('i1')

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)

关于用R中的列平均值替换矩阵中的无限值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46991370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com