这可能与之前发布的其他类似问题相同,但我无法找到完全匹配(如果此处已存在,请直接与我联系)。根据同一个向量中的值更改向量值
无论如何,我有一个19列和5000行的矩阵。每行包含在0.1(所以,0.0,0.1,0.2 ... 1.0)等从而增量在0.0和1之间的一个值:
0 0.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
...
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
所以矢量从1到0.1在再次重新开始之前1并转移到下一列。我想要一个基本上从一行到另一行的函数,看看是否有一个数值,然后将1减去该值的下一个位置。有效的是这样的:
0 0.6 0.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.5 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.4 0.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
...
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.9 0.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.8 0.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
我试过用“应用”或只图基重新编码,但窍门就是通过一切〜5000行运行的几件事情。也许我应该通过阅读专栏来处理它?
您可以使用'ifelse'工作列,检查以前的列值并在条件匹配时更改当前列。 'ifelse'是矢量化的,所以每列操作都很快。你需要一个for循环从最右边的列开始。 – dracodoc
另一种方法是计算要更改的单元格的所有索引,将它们放入一个向量中,并按照相同顺序计算所有要更新的值,放入另一个向量中,然后按索引更新它们。 – dracodoc