删除整行以使两个数据集大小相同

removing entire rows to make the two datasets the same size

我需要帮助删除第一列 (V1) 中的元素与列 (X1) 中的元素不对应的行。我的数据集更大,我只是用这个例子来让它更容易理解。

         V1   V2   V3            X1  X2  X3
 [1,]     1    2    3     [1,]    1   2   3
 [2,]     2    2    3     [2,]    1   2   3
 [3,]     1    2    3     [3,]    1   2   3
 [4,]     1    2    3
 [5,]     3    2    3

对于这个例子,我需要代码删除行 [2,] 和 [5,],因为它们与 X1 中的不同(一般的想法是修复我的数据集,使它们具有相同的元素并删除那些在 V 但不在 X 中的元素)。

我想的代码是这样的:

for(k in 1:nrow(V)){
    if(V[k,1]!=X[k,1]){
       V[-k,]
    }
 }

但它不起作用,因为 V 的大小与 X 不同。

如有任何帮助,我们将不胜感激!!

我们可以使用 %in% 来获取 'V1'(在矩阵 'm1' 中)元素的逻辑索引,这些元素存在于 'X1'(来自 'm2'), 取反 (!) 以获得不存在的元素,并将其用作行索引以对 'm1'.

进行子集化
m1[!m1[,'V1'] %in% m2[, 'X1'],]
#     V1 V2 V3
#[1,]  2  2  3
#[2,]  3  2  3