生成一个20行10列的矩阵,把矩阵的每一行向右移3个位置
jz <- matrix(1:200,nrow = 20)
shift <- function(k,b) {c(b[(length(b)-k+1):length(b)],b[1:(length(b)-k)])}apply(jz,1,shift,k=3) / /编写函数shift,把向量右移k个位置
jz1 <- apply(jz,1,shift,k=3). //这里apply是对矩阵的每个行向量执行命令后默认生成列向量,故接下来用t()来把矩阵转置
[,1] [,2] [,3]. [,4]. [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157. 158 159 160
[2,] 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177. 178 179 180
[3,] 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197. 198 199 200
[4,] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17. 18 19 20
[5,] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37. 38 39 40
[6,] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57. 58 59 60
[7,] 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77. 78 79 80
[8,] 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97. 98 99 100
[9,] 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117. 118 119 120
[10,] 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137. 138 139 140
t(jz1)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 141 161 181 1 21 41 61 81 101 121[2,] 142 162 182 2 22 42 62 82 102 122
[3,] 143 163 183 3 23 43 63 83 103 123
[4,] 144 164 184 4 24 44 64 84 104 124
[5,] 145 165 185 5 25 45 65 85 105 125
[6,] 146 166 186 6 26 46 66 86 106 126
[7,] 147 167 187 7 27 47 67 87 107 127
[8,] 148 168 188 8 28 48 68 88 108 128
[9,] 149 169 189 9 29 49 69 89 109 129
[10,] 150 170 190 10 30 50 70 90 110 130
[11,] 151 171 191 11 31 51 71 91 111 131
[12,] 152 172 192 12 32 52 72 92 112 132
[13,] 153 173 193 13 33 53 73 93 113 133
[14,] 154 174 194 14 34 54 74 94 114 134
[15,] 155 175 195 15 35 55 75 95 115 135
[16,] 156 176 196 16 36 56 76 96 116 136
[17,] 157 177 197 17 37 57 77 97 117 137
[18,] 158 178 198 18 38 58 78 98 118 138
[19,] 159 179 199 19 39 59 79 99 119 139
[20,] 160 180 200 20 40 60 80 100 120 140