【问题标题】:R how to produce a vector trimming another vector by choosing a fixed value of its componentsR如何通过选择其分量的固定值来生成修剪另一个向量的向量
【发布时间】:2013-06-24 09:49:46
【问题描述】:

这是一个基本问题;我为此道歉。 让x <- c(1,2,3,4,5)。我想生成一个长度为 5 s.t. 的向量 z。它的组件都是那些满足条件的x

如果x[i]>2 则写2

结果应该是这样的

z <- c(1,2,2,2,2)

我知道

z <- which(x>2)

给我

3 4 5 

但我找不到一个好的方法来实现它以获得结果。 谢谢大家的支持。

编辑。如果不考虑向量x 我有一个矩阵M 与列xy 并且我想将上述修剪应用于列x 保持y 不变,我应该如何继续?

【问题讨论】:

    标签: r vector trim


    【解决方案1】:

    你可以使用pmin:

    pmin(x, 2)
    # [1] 1 2 2 2 2
    

    【讨论】:

      【解决方案2】:

      例如:

      y <- x
      y[x>2] <- 2
      1 2 2 2 2
      

      如果您有一个包含两列的 matrix M,并且您只想将第一列替换为大于 2 到 2 的值,请执行以下操作:

      M[,1][M[,1]>2] <- 2
      

      【讨论】:

      • 非常感谢,它有效。我很感兴趣(因为我不是专业人士)需要将y 引入x,然后再次使用x
      • @agstudy,我在考虑要替换的值不是 2 的情况(例如:3,将导致 (1,2,3,3,3))。但我认为您的解决方案是专门为此而设计的。所以删除了评论。
      • @agstudy 如果不考虑向量 x 我有一个矩阵 M 与列 xy 并且我想将上述修剪应用于列 x 离开y 原封不动,我该怎么做? M[M$x&gt;2,] &lt;- 2 没有意义...
      • @Avitus,你应该做M[,1][M[,1]&gt;2] &lt;- 2 其中[,1] 是列x 的索引。
      • @Arun 非常感谢!请随时将您的评论转移到答案中
      猜你喜欢
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多