我甚至不知道如何描述我想做什么,所以希望这个标题至少有一些意义.

如果我向您展示:

我有一个简单的字母a到e的3x5矩阵:

matrix(data = rep(letters[1:5], 3), nrow = 3, ncol = 5, byrow = TRUE)

它给出了:

     [,1] [,2] [,3] [,4] [,5]
[1,] "a"  "b"  "c"  "d"  "e" 
[2,] "a"  "b"  "c"  "d"  "e" 
[3,] "a"  "b"  "c"  "d"  "e"

我想在不手动键入的情况下将其更改为:

     [,1] [,2] [,3] [,4] [,5]
[1,] "a"  "b"  "c"  "d"  "e" 
[2,] "e"  "a"  "b"  "c"  "d" 
[3,] "d"  "e"  "a"  "b"  "c"

我在考虑某种循环系统或类似的系统,但我不知道从哪里开始.

推荐答案

对于简单的情况,您可以try 这个for循环.

n <- dim(m3)[2]
for (i in seq_len(nrow(m))[-1]) {
  m3[i, ] <- c(m3[i, (n - i + 2):n], m3[i, 1:(n - i + 1)])
}
m3
#     [,1] [,2] [,3] [,4] [,5]
# [1,] "a"  "b"  "c"  "d"  "e" 
# [2,] "e"  "a"  "b"  "c"  "d" 
# [3,] "d"  "e"  "a"  "b"  "c" 

为了让模式在更长的矩阵中重复,我们可以概括如下:

n <- dim(m7)[2]
for (i in seq_len(nrow(m7))[-1]) {
  j <- i %% 5
  if (j == 0) j <- 5
  if (j > 1) m7[i, ] <- c(m7[i, (n - j + 2):n], m7[i, 1:(n - j + 1)])
}
m7
#     [,1] [,2] [,3] [,4] [,5]
# [1,] "a"  "b"  "c"  "d"  "e" 
# [2,] "e"  "a"  "b"  "c"  "d" 
# [3,] "d"  "e"  "a"  "b"  "c" 
# [4,] "c"  "d"  "e"  "a"  "b" 
# [5,] "b"  "c"  "d"  "e"  "a" 
# [6,] "a"  "b"  "c"  "d"  "e" 
# [7,] "e"  "a"  "b"  "c"  "d" 

Data:

m3 <- matrix(data=letters[1:5], nrow=3, ncol=5, byrow=TRUE)
m7 <- matrix(data=letters[1:5], nrow=7, ncol=5, byrow=TRUE)

R相关问答推荐

使用ggcorrplot删除值,但保留不重要相关性的 colored颜色

R中的滞后累积量

根据列中的数字移动单元格位置

按崩溃类别分类的指数

混淆矩阵,其中每列和等于1

提取R中值和列名的所有可能组合

使用R中相同值创建分组观测指标

如何使用列表中多个列表中的第一条记录创建数据框

如何在R中描绘#符号?

计算两列中满足特定条件连续行之间的平均值

汇总数据帧中的复制列,保持行的唯一性

R中的类别比较

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

如何将一个方阵分解成没有循环的立方体

使用geom_sf跨越日期线时的闭合边界

如何在条形图中的x和填充变量中包含多个响应变量?

ggplot斜体轴刻度标签中的单个字符-以前的帖子建议不工作

按镜像列值自定义行顺序

如果满足条件,则替换列的前一个值和后续值

具有自定义仓位限制和计数的GGPLATE直方图