r语言 - 根据两个位置向量删除矩阵中的特定值



我的目标是根据向量删除矩阵中的特定位置。只是给你一个小例子。

  Users_pos <- c(1,2)
  Items_pos <- c(3,2)

给定矩阵 A:

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

根据两个向量User_pos和Item_pos,我的目标是删除以下值

A[1,3] and A[3,2]

我想知道是否有可能在不手动输入行和列的值的情况下这样做。

您可以使用

A[X] 为矩阵A中的k元素编制索引,其中X是 k 行、2 列矩阵,其中每行是指示元素的(行,列)值。因此,您可以使用以下索引矩阵在A中为两个元素编制索引:

rbind(Users_pos, Items_pos)
#           [,1] [,2]
# Users_pos    1    2
# Items_pos    3    2

使用此索引,您可以选择提取当前与A[X]一起存储的信息,或将这些元素替换为 A[X] <- new.values 。例如,如果您想将这些元素替换为 NA ,您可以执行以下操作:

A[rbind(Users_pos, Items_pos)] <- NA
A
#      [,1] [,2] [,3]
# [1,]    1   NA    3
# [2,]    4    5    6
# [3,]    7   NA    9

最新更新