[英]shift matrix elements in R
n <- 5
a <- matrix(c(1:n**2),nrow = n, byrow = T)
output 是
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
[4,] 16 17 18 19 20
[5,] 21 22 23 24 25
如何將“1”轉換為“25”的當前 position 看起來像這樣:
[,1] [,2] [,3] [,4] [,5]
[1,] 2 3 4 5 6
[2,] 7 8 9 10 11
[3,] 12 13 14 15 16
[4,] 17 18 19 20 21
[5,] 22 23 24 25 1
a <- t(a); a[] <- c(a[-1], a[1]); a <- t(a)
a
# [,1] [,2] [,3] [,4] [,5]
# [1,] 2 3 4 5 6
# [2,] 7 8 9 10 11
# [3,] 12 13 14 15 16
# [4,] 17 18 19 20 21
# [5,] 22 23 24 25 1
c(a)
將矩陣展開或展開為向量。 它首先執行此列,因此c(a)
導致[1] 1 6 11 16 21 2...
。 不過,我們希望它是行優先的,所以t(a)
對其進行轉置,因此行優先現在是列優先,從而允許c(a)
等工作。c(a[-1], a[1])
只是“將除第一個之外的所有元素與第一個連接起來” ,這是將vector
的第一個元素放在末尾的經典方法。a[] <-
是一種對其值進行計算的方法,其中計算不保留 object 的“維數”。t
回原始形狀和行/列順序。這里是基礎 R 單線
> t(`dim<-`(t(a)[seq_along(a)%%length(a)+1],rev(dim(a))))
[,1] [,2] [,3] [,4] [,5]
[1,] 2 3 4 5 6
[2,] 7 8 9 10 11
[3,] 12 13 14 15 16
[4,] 17 18 19 20 21
[5,] 22 23 24 25 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.