簡體   English   中英

移位 R 中的矩陣元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM