【问题标题】:Crosschecking numbers of a matrix in R交叉检查R中矩阵的数字
【发布时间】:2020-11-24 19:40:47
【问题描述】:

我目前正在处理一个包含两列的大型矩阵,我要检查的是是否每一行/组合(两列)也存在于加载的数据框中(两列)。

例子,

(obj_design <- matrix(c(2,5,4,7,6,6,20,12,4,0), nrow = 5, ncol = 2))
     [,1] [,2]
[1,]    2    6
[2,]    5   20
[3,]    4   12
[4,]    7    4
[5,]    6    0

(refined_grid <- data.frame(i=1:4, j=1:12))
   i  j
1  1  1
2  2  2
3  3  3
4  4  4
5  1  5
6  2  6
7  3  7
8  4  8
9  1  9
10 2 10
11 3 11
12 4 12

按照可重现的示例,将选择 (2,6) 和 (4,12)。

我想知道是否有一个函数可以用来检查整个矩阵,并查看数据帧中是否有特定的行,以及(如果可能)单独写入(新数据集)它是矩阵的哪些元素在。

任何帮助都会很棒。

【问题讨论】:

    标签: r dataframe matrix


    【解决方案1】:

    这是match的选项

    i1 <-  match(do.call(paste, as.data.frame(obj_design)),
                do.call(paste, refined_grid), nomatch = 0)
    refined_grid[i1,]
    

    【讨论】:

      【解决方案2】:

      此代码将为您提供数据框中存在矩阵的哪些行。

      which(paste(obj_design[,1], obj_design[,2]) %in%
            paste(refined_grid$i, refined_grid$j)
      )
      

      然后你可以把它分配给一个向量!

      【讨论】:

      • 谢谢@dyrland。它对我有帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-14
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 2018-04-02
      • 2021-12-18
      • 1970-01-01
      相关资源
      最近更新 更多