【问题标题】:how to find particular rows or columns in R with specific conditions如何在特定条件下查找 R 中的特定行或列
【发布时间】:2015-08-30 19:55:57
【问题描述】:

例如,如果我们有一个矩阵或数组,格式如下

M = matrix(c(1,1,0,0,0,1,0,1,0,0,0,0,1,1,0,1), # the data elements 
    nrow=4,              # number of rows 
    ncol=4,              # number of columns 
    byrow = TRUE)        # fill matrix by rows 

怎样才能找到里面只有0的行和列的索引呢? 如果我们有一个更复杂的矩阵,我们需要找出其中所有数字都在特定区间内的行或列怎么办?

M = matrix(c(1,1,12,34,0,19,15,1,0,17,12,0,21,1,11,1), # the data elements 
    nrow=4,              # number of rows 
    ncol=4,              # number of columns 
    byrow = TRUE)        # fill matrix by rows 

我应该如何找到所有数字都在 (10 - 20) 之间的列?

非常感谢任何可以提供帮助的人。

而且,我也不能使用 for 或 while 循环来处理它。

【问题讨论】:

  • 请提供您的数据dput。没有数据可玩,很难以这种方式帮助您。
  • 像一个数组 array_test=array(c(1,0,0,1,1,1,0,1,0,0,0,0,0,1,0,1),暗淡=c(4,4))
  • 我需要在这样的矩阵或数组中找到内部只有0的列或行
  • 哇。 @Zephyr Lian,您拒绝我对创建数据集的有用编辑M,然后将我的代码粘贴到您自己中,2x。干杯。
  • 大声笑,如果我做错了什么,我很抱歉,我是新来的。顺便说一句,我做了什么?

标签: arrays r matrix find row


【解决方案1】:

你可以这样做:

 which(apply(M, 1, sum) == 0 )
[1] 3
 which(apply(M, 2, sum) == 0 )
[1] 3

使用1 搜索行,使用2 搜索列。结果告诉您哪些行和列全为零。使用M,您可以看到第 3 行和第 3 列只有零。

或者按照 Akrun 的建议,您可以使用 rowSumscolSums,这应该会更快。

 which(rowSums(M) == 0)
[1] 3
 which(colSums(M) == 0)
[1] 3

【讨论】:

  • 你们太棒了。我更新了问题,我可以做一些类似的事情来找出更复杂的问题吗?
  • @ZephyrLian 这听起来像是一个完全不同的问题。您应该在开始时问它或打开另一个问题,因为答案比这个复杂一点。
  • ZephyrLian,将您的问题分解成不同的部分并作为单独的问题发布,您将帮助自己、回答的人和来到这里寻找答案的人。 @SabDeM 非常正确。
猜你喜欢
  • 2019-06-05
  • 1970-01-01
  • 2023-01-04
  • 2021-08-07
  • 2022-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多