当前位置: 首页 > 知识库问答 >
问题:

R函数返回满足最小和最大范围的矩阵行

邴俊友
2023-03-14

具有以下矩阵:

      [,1] [,2] [,3] [,4] 
  [1,]  231   14  517  310 
  [2,]    1  154   18   21 
  [3,]  121    6  198   23 

我想只得到每行的最小范围在2到30之间的行。

每行的最小范围:

 [1] 79
 [2]  3
 [3] 17

所以我们只得到[2]和[3]

每行的最大范围在0到160之间:

  [1] 503
  [2] 153
  [3] 192

最后我们只得到满足这两个条件的[2]。你能提供一个R语言函数来生成这个结果吗?

问候迪米特里斯

共有2个答案

袁翰池
2023-03-14

下面是一个使用函数dist()解决方案

m <- matrix(
  c(231, 14, 517, 310, 
    1,  154,   18,   21, 
  121,    6,  198,   23 ), 3, byrow=TRUE)


mi <- apply(m, 1, function(x) min(dist(x)))
ma <- apply(m, 1, function(x) max(dist(x)))

m[mi > 2 & mi < 30 & ma > 0 & ma < 160, ]
贲骏喆
2023-03-14

设置数据

m <- read.table(text="231   14  517  310
                        1  154   18   21
                      121    6  198   23")

m <- as.matrix(m)

每行的最大范围

maxr <- apply(m, 1, function(x) diff(range(x)))

每行的最小范围

minr <- apply(m, 1, function(x) min(diff(sort(x))))

将其串在一起,形成一排的条件

m[minr > 2 & minr < 20 & maxr > 0 & maxr < 160, ]
#   1 154  18  21 
 类似资料:
  • 这个问题可能是封闭的,因为它听起来很模糊,但我真的问这个,因为我不知道或者我的数学背景不够。 我试图实现一个挑战,其中一部分挑战要求我计算矩阵的最小值和最大值。我对矩阵的实现及其操作没有任何问题,但是什么是矩阵的最小值和最大值?考虑到3x3矩阵是9个数中最小的数,最大的是最大的还是其他什么?

  • 我实现了c程序,可以找到矩阵的元素:行的最大元素,同时列的最小元素,或行的-min元素,同时列的最大元素。例如,我们有数据。包含以下内容的txt文件: 4 7 8 9 10 6 5 4 11 5 0 1 12 4 2 7 13- 其中4是n-矩阵大小(4x4),7和10是这些数字。 下面是代码: 问题:我想知道我的代码是不是“脏”代码?因为我总是渴望让一切变得如此困难,只要有可能让它变得容易。是否

  • 我正在寻找一个有效的解决方案,从矩阵中选择不重叠的值,而不考虑成本的最小化。匈牙利算法通过选择一个代价最小的组合来解决指派问题。然而,我想要一个最大值的最小化。 匈牙利人会选择 总成本=1+2+5=8 但是,最大值为5。 我希望将组合选择为 所以我想要的输出是:4,3,2 而不是成本最小化。我想选择一个最小最大数量的组合。

  • 我碰到了R的< code>range函数。它确实是一个有用的工具,并使代码更具可读性,但是如果用一个简单的包含< code>min和< code>max的一行程序来代替它,它的速度可以提高一倍。 我做了一些基准测试,range函数的“糟糕”性能让我吃惊。为了进行比较,我编写了一个名为< code>range2的函数,它使用了min和max(参见代码)。除了速度之外,如果一个简单的一行程序可以胜过这

  • 我一直在寻找这个问题的答案,但运气不佳,所以希望有人能帮助我! 我正在处理周期性数据,我试图找到两个波峰和两个波谷的相关值——这不一定等同于最大/最小和第二个最大/最小值,而是最大/最小和第二个最大/最小值,条件是该值大于/小于前面和后面的值。 这是一个循环的例子 我有 1000 个周期,所以我在 dplyr 中使用group_by对周期进行分组,然后希望在组中应用条件最大值/最小值参数。 我很感

  • 问题内容: 最近在一次采访中有人问我这个问题。 给定以下代码,静态整数的最小和最大可能值是多少? 我告诉他们,最大值将为25(在没有竞争条件的情况下),而最小值将为5(在每次迭代时所有线程之间的竞争条件的情况下)。 但是面试官说,最小值甚至可以低于5。这 怎么可能? 问题答案: 我声称最小值可能是2。 这样做的关键是的非原子性,即它是读和写,它们之间可能有其他操作。 调用线程T1..T5: T1读