【问题标题】:How to locate specific elements in one matrix and compare those with a second matrix?如何在一个矩阵中定位特定元素并将其与第二个矩阵进行比较?
【发布时间】:2018-03-19 05:36:11
【问题描述】:

让我们有一个二进制矩阵/数据框:

library("Matrix")
df_binary <- data.frame(as.matrix(rsparsematrix(1000, 20,nnz = 800,  rand.x = runif)))
df_binary[df_binary > 0] = 1

现在,我想为所有相等值为 1 的元素创建一个索引对象。
我如何在 R 中做到这一点?

我需要类似这些条目的索引来将二进制矩阵的条目与第二个矩阵的条目进行比较。两个矩阵的大小相同 - 如果此信息可能很重要。

【问题讨论】:

  • 可能是这样的? which(df_binary ==1 ,arr.ind = TRUE)
  • @MikeH.: 太棒了!这就是我要找的东西-谢谢! :)
  • 如果您实际上使用稀疏矩阵来保存数据,那么这些实际上存储了非零元素的索引。

标签: r object dataframe matrix indexing


【解决方案1】:

如果你想要一个列表,你可以按照以下方式做一些事情

list_ones <- function(df) {
  out <- list()

  for (col in names(df)) {
    out[[col]] <- which(df[[col]] == 1)
  }

  return(out)
}

list_ones(df_binary) 

【讨论】:

    猜你喜欢
    • 2015-07-20
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多