這可能與之前發佈的其他類似問題相同,但我無法找到完全匹配(如果此處已存在,請直接與我聯繫)。根據同一個向量中的值更改向量值
無論如何,我有一個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