gpt4 book ai didi

R - 计算矩阵列中 "True"值的数量并分配 "False"

转载 作者:行者123 更新时间:2023-12-02 19:15:17 25 4
gpt4 key购买 nike

我有一个看起来像这样的矩阵:

set.seed(1234)
m <- matrix(round(runif(50,0,4)), ncol=10)
m <- (m>2)
      [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10]
[1,] FALSE TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
[3,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
[4,] FALSE TRUE TRUE FALSE FALSE TRUE FALSE TRUE FALSE FALSE
[5,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE

对于每一列,我需要计算 TRUE 的数量。如果每列的 TRUE 总数低于 3,然后我需要该列中的每个 TRUE 变为 FALSE

对于此示例,预期输出为:

      [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10]
[1,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE
[5,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE

我的真实矩阵要大得多(100,000 x 2,000),因此解决方案需要很快。

关于如何到达那里有任何提示吗?

最佳答案

首先,可以使用“colSums”查找列的计数:

colSums(m)
# [1] 1 2 2 1 0 3 0 3 1 2

然后,就像您覆盖 m 一样矩阵与您的 m <- m > 2 ,您可以使用条件覆盖选择列:

m[, colSums(m) < 3] <- FALSE
m
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE
# [2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [3,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
# [4,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE
# [5,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE

关于R - 计算矩阵列中 "True"值的数量并分配 "False",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63799421/

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