根据索引向量替换矩阵列中的值?

标签 r matrix vector

我有一个零矩阵:

M <- matrix(0, nrow = 10, ncol = 5)

和索引向量

V <- c(1,5,3,2,3,4,1,3,2,4)

我想在 1:10 中将条目 M[i,V[i]] 替换为 1, i。如何在不使用暴力(for 循环)的情况下做到这一点?下面是使用暴力执行此操作的代码,这在更高维度上效率不高:

for(i in 1:10) M[i,V[i]] = 1

最佳答案

您可以从向量 V 中创建一个矩阵并直接使用它,即

M[matrix(c(seq_along(V), V), ncol = 2)] <- 1

关于根据索引向量替换矩阵列中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58658594/

相关文章:

r - 在 RMarkdown YAML header 中指定十六进制颜色

java - 使用 Spring 框架在矩阵中直接注入(inject) double 值

c - 为什么在 C 语言中此矩阵代码会出现编译器错误?

c++ - 在 C++ 中对 vector 进行排序

c++ - 将二维数组插入 vector 并删除数组,但会导致段错误

r - 根据列数在数据框列表中创建新变量

r - 基于 2 列中的值对表进行重复数据删除 + 模糊匹配

C++ vector 、指针等

r - 如何计算特定年份中 R 中的小数月份?

r - 没有行和列名称的矩阵显示?