问题描述
当X
包含一个元素时,我将像这样运行程序
set.seed(333)
X <- numeric()
Y <- matrix(0,4,4)
for (j in 1:4) {
for (i in 1:4) {
if (j == 1) {
X[i] <- c(sample(10,1))
Y[j,i] <- 2*X[i]
} else {
X[i] <- c(sample(10,i] <- 5*Y[j - 1,i] + X[i]
}
}
}
Y
我的问题是,当我的Y
包含2个通过X
生成的元素时,如何获取c(sample(10,1),sample(10,1))
。
解决方法
如何用数组处理它?
set.seed(333)
X <- array(0,c(4,2))
Y <- array(0,4,2))
for (j in 1:4) {
for (i in 1:4) {
X[i,1:2] <- sample(10,2,replace = TRUE)
if (j == 1) Y[j,i,1:2] <- 2*X[i,1:2]
else Y[j,1:2] <- 5*Y[j - 1,1:2] + X[i,1:2]
}
}
Y
#>,1
#>
#> [,1] [,2] [,3] [,4]
#> [1,] 18 4 4 6
#> [2,] 97 21 30 34
#> [3,] 494 108 156 171
#> [4,] 2475 550 781 858
#>
#>,2
#>
#> [,] 14 14 12 14
#> [2,] 78 77 66 76
#> [3,] 396 391 333 390
#> [4,] 1990 1959 1670 1959
请注意,这里有您要寻找的夫妻:
Y[1,1,]
#> [1] 18 14
Y[1,]
#> [1] 4 14
Y[1,3,]
#> [1] 4 12
Y[1,]
#> [1] 6 14
Y[2,]
#> [1] 97 78
Y[2,]
#> [1] 21 77
Y[2,]
#> [1] 30 66
Y[2,]
#> [1] 34 76
Y[3,]
#> [1] 494 396
Y[3,]
#> [1] 108 391
Y[3,]
#> [1] 156 333
Y[3,]
#> [1] 171 390
Y[4,]
#> [1] 2475 1990
Y[4,]
#> [1] 550 1959
Y[4,]
#> [1] 781 1670
Y[4,]
#> [1] 858 1959
我从if-else中取出了X,因为您无论如何都不会这样做。
此外:sample(10,replace = TRUE)
等同于c(sample(10,1),sample(10,1))
,但更短。