【问题标题】:How to compare two columns of matrix in r and output the column name in a new vector如何比较r中矩阵的两列并在新向量中输出列名
【发布时间】:2018-04-12 18:59:24
【问题描述】:

我有一个 2 列 1000 行的矩阵

         first   second
1        0.96     1.34
2        0.67     1.22
3        1        0.87
..
1000      12      11

我想比较矩阵每一行的两列,并在一个新向量中输出值,值为“第一”或“第二”

我的输出应该是

second second first .... first

我想在 R 中这样做

到目前为止我在 R 中所做的尝试

if(data[2] > data[1]) "second" else "first"

这将返回一个只有 1 个值的向量。请帮忙

【问题讨论】:

    标签: r matrix vector


    【解决方案1】:

    您需要 if/else 的矢量化版本。矩阵版:

    ifelse(data[,2] > data[,1], "second", "first")
    

    【讨论】:

    • length(ifelse(data[[2]] > data[[1]], "second", "first")) 返回 1。有什么我应该改变的语法吗?
    • 感谢您的收获,格雷戈尔!固定!
    • 感谢@Gregor 和 Melissa,点赞
    【解决方案2】:

    类似于梅丽莎的回答。这有点不太清楚,但比ifelse 更有效率。

    colnames(data)[(data[, 2] > data[, 1]) + 1L]
    

    比较将输出TRUEFALSE(相当于10)。当我们添加 1 时,它变为 2 或 1。我们可以使用它来索引列名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      相关资源
      最近更新 更多