【问题标题】:how to see if any element of a list contains only a certain value in R如何查看列表的任何元素是否仅包含R中的某个值
【发布时间】:2021-09-28 09:29:23
【问题描述】:

我有一个包含许多矩阵的列表,比如说 my_list。我想检查这些矩阵中的任何一个是否只有零作为其元素,如果是,该列表中的哪个矩阵有这种情况。

library(R.utils)
output_vec <- vector()
for(i in 1:length(my_list)){
   asZero(as.vector(my_list[[i]]))}

这给了我真正的错误,但是我无法返回所有零元素的矩阵索引。我很感激这方面的任何帮助。

【问题讨论】:

  • 您缺少),该函数名为isZero

标签: r list loops if-statement matrix


【解决方案1】:

我们可能需要用all 换行 - 用sapply 循环矩阵的list,创建一个逻辑表达式 (x == 0),用all 换行以返回单个 TRUE/FALSE - 如果除 NA (na.rm = TRUE) 之外的所有值均为 0,这将返回 TRUE 或 FALSe

sapply(my_list, function(x) all(x == 0, na.rm = TRUE))

【讨论】:

    【解决方案2】:

    您可以使用norm判断矩阵中的所有条目是否为零,例如,

    sapply(my_list, norm) == 0
    

    因为矩阵的范数是0 当且仅当所有值都为零。


    示例

    > my_list
    [[1]]
         [,1] [,2] [,3]
    [1,]    0    0    0
    [2,]    0    0    0
    [3,]    0    0    0
    
    [[2]]
         [,1] [,2]
    [1,]    1    1
    [2,]    0    0
    
    
    > sapply(my_list, norm) == 0
    [1]  TRUE FALSE
    

    【讨论】:

    • 很好地使用svd
    • 我明白了。这是一个非常有趣的想法!
    猜你喜欢
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多