c(1, 2, 3, 3, 2, 1, 3)
またはなどの数値ベクトルがあり、c(1, 4, 1, 4, 4, 1)
個々の要素の位置を保持したいのですが、値を入れ替え/反転してc(3, 2, 1, 1, 2, 3, 1)
、c(4, 1, 4, 1, 1, 4)
それぞれを取得します。
それを達成するために、私はたくさんのデバッグとパッチを適用した、かなりラフで醜いコードを以下に思いつきました...
blah <- c(1, 4, 1, 4, 4, 1, 3)
blah.uniq <- sort(unique(blah))
blah.uniq.len <- length(blah.uniq)
j <- 1
end <- ceiling(blah.uniq.len / 2)
if(end == 1) {end <- 2} # special case like c(1,4,1), should get c(4,1,4)
for(i in blah.uniq.len:end) {
x <- blah == blah.uniq[i]
y <- blah == blah.uniq[j]
blah[x] <- blah.uniq[j]
blah[y] <- blah.uniq[i]
j = j + 1
}
blah
これを行う簡単な方法はありますか?