英文:
How to assign multiple values for a matrix in R?
问题
我有一个93060行141列的矩阵文件,其中填充了数值。
我需要根据以下条件将一些行和列赋值为零:第1行的第1列到第65行的第1列;第67行到第131行的第2列;第133行到第197行的第3列,依此类推。
这个条件会排除某些列,也就是第10、20、36列的行的数值保持不变。
我认为我会需要一个for循环。但我不知道如何编写代码来表达所述条件下行和列的关联。
英文:
I have a 93060-by-141 matrix file with filled values.
I need to assign zeros to some rows and columns with the condition: Row 1: 65 of column 1; row 67:131 of column 2; row 133:197 of column 3 and so on.
This condition excludes for some column, i.e the values in rows of column 10,20,36 are unchanged.
I think I will need a For-loop. But I have no idea how to code for the link of rows and columns expressing the mentioned condition.
答案1
得分: 2
可以通过提供一个索引矩阵来更改多个值。索引对应于单元格的行数(第一列)和列数(第二列)。例如,执行mymat[cbind(1:10, 1)] <- 0
将把第一到第十行的第一列更改为零。在你的情况下,你可以将多个这样的cbind()
语句组合在一起,然后使用rbind()
来调用它们。例如,mymat[rbind(cbind(1:5, 1), cbind(6:10, 2))] <- 0
将把第一到第五行的第一列和第六到第十行的第二列更改为零。在你提出的示例中,它将是这样的:
my_mat[rbind(
cbind(1:65, 1),
cbind(67:131, 2),
cbind(133:197,3))] <- 0
英文:
You can change multiple values by providing a matrix of indexes to a matrix. The indices correspond with the row (first column) and column (second column) numbers of the cells. For example doing mymat[cbind(1:10, 1)] <- 0
would change the first through tenth rows of column 1 to zero. In you case, you could put together several such cbind()
statements with a call to rbind()
. For example, mymat[rbind(cbind(1:5, 1), cbind(6:10, 2))] <- 0
would change the first through fifth rows of column 1 and the sixth through tenth rows of column 2 to zero. In the example you proposed above, it would be something like this:
my_mat[rbind(
cbind(1:65, 1),
cbind(67:131, 2),
cbind(133:197,3))] <- 0
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论