データを転置するのではなく、下の行を上に移動するなど、データフレームの行を変更/反転する必要があります。データフレームが次の場合:
_1 2 3
4 5 6
7 8 9
_
に変換する必要があります
_7 8 9
4 5 6
1 2 3
_
私はsort()
について読みましたが、それが私が必要とするものではないと思います、または方法を見つけることができません。
おそらくもっとエレガントな方法がありますが、これはうまくいきます:
_m <- matrix(1:9, ncol=3, byrow=TRUE)
# m[rev(seq_len(nrow(m))), ] # Initial answer
m[nrow(m):1, ]
[,1] [,2] [,3]
[1,] 7 8 9
[2,] 4 5 6
[3,] 1 2 3
_
これは、行インデックスとして整数の逆のシーケンスで行列にインデックスを付けるために機能します。 nrow(m):1
結果は_3 2 1
_になります。
dplyr
パッケージを使用して、data.frameの順序を逆にすることができます。
iris %>% arrange(-row_number())
またはパイプオペレーターを使用せずに
arrange(iris, -row_number())
この行に沿って、行数で始まるインデックスの行を逆にします
revdata <- thedata[dim(thedata)[1L]:1,]
私はこれが最も簡単な方法だと思います:
MyMatrix = matrix(1:20, ncol = 2)
MyMatrix[ nrow(MyMatrix):1, ]
列を逆にしたい場合は、
MyMatrix[ , ncol(MyMatrix):1 ]
Row.namesの順序を逆にすることができます(data.frameの場合のみ)。
# create data.frame
m <- matrix(1:9, ncol=3, byrow=TRUE)
df_m <- data.frame(m)
#reverse
df_m[rev(rownames(df_m)), ]
# X1 X2 X3
# 3 7 8 9
# 2 4 5 6
# 1 1 2 3
Veeeryは遅くなりますが、これは高速に動作しているようで、追加のパッケージを必要とせず、簡単です:
for(i in 1:ncol(matrix)) {matrix[,i] = rev(matrix[,i])}
私は、頻繁に使用するために、それから機能を作成すると思います。 R v = 3.3.1でテスト済み。
今日この問題に遭遇し、ここで私はあなたの利益のために別の解決策を提供しています。
m <- matrix(1:9, ncol=3, byrow=TRUE)
apply(m,2,rev)