为多个子数组分配不同的值
Assigning different values to multiple subarrays
我有一个数组 x,其中 1:10 中的随机值分配给 x 中的每个子数组。
x <- array(sample(1:10), dim = c(5, 5, 2)) # 5 rows, 5 columns, 2 levels
x
这给出了
x
, , 1
[,1] [,2] [,3] [,4] [,5]
[1,] 6 7 6 7 6
[2,] 8 5 8 5 8
[3,] 9 10 9 10 9
[4,] 3 4 3 4 3
[5,] 2 1 2 1 2
, , 2
[,1] [,2] [,3] [,4] [,5]
[1,] 7 6 7 6 7
[2,] 5 8 5 8 5
[3,] 10 9 10 9 10
[4,] 4 3 4 3 4
[5,] 1 2 1 2 1
在 sample(...) 上方的每个子数组中随机选择 1:10 中的值并将它们分配给 x。
是否有现有的 R 函数可以自动将一定比例的值自动分配给数组的每一层?比如说,第一级只有 1:2,第二级只有 8:9,第三级只有 3、4、5、6、7、10。
我知道如何使用子集化 ([]) 来做到这一点,但是当级别数很大时(比如 10 个或更多,而不是只有 3 个(如上所述)),子集化变得乏味。
abind
库有函数 abind
可以帮助你做你想做的事。
我实现了一个包含所有所需范围的列表,然后使用该列表构建具有第三维的新数组。 along
参数告诉 abind
在第三个维度中添加。
subsets <- list(c(1,2),c(8:10),c(3,4,5,6,7))
# first array
x <- array(sample(subsets[[1]],25,replace=T),dim=c(5,5))
# 2:n arrays added to x
for (i in 2:length(subsets)) {
x <- abind(x,array(sample(subsets[[i]],25,replace=T),dim=c(5,5)),along=3)
}
我有一个数组 x,其中 1:10 中的随机值分配给 x 中的每个子数组。
x <- array(sample(1:10), dim = c(5, 5, 2)) # 5 rows, 5 columns, 2 levels
x
这给出了
x
, , 1
[,1] [,2] [,3] [,4] [,5]
[1,] 6 7 6 7 6
[2,] 8 5 8 5 8
[3,] 9 10 9 10 9
[4,] 3 4 3 4 3
[5,] 2 1 2 1 2
, , 2
[,1] [,2] [,3] [,4] [,5]
[1,] 7 6 7 6 7
[2,] 5 8 5 8 5
[3,] 10 9 10 9 10
[4,] 4 3 4 3 4
[5,] 1 2 1 2 1
在 sample(...) 上方的每个子数组中随机选择 1:10 中的值并将它们分配给 x。
是否有现有的 R 函数可以自动将一定比例的值自动分配给数组的每一层?比如说,第一级只有 1:2,第二级只有 8:9,第三级只有 3、4、5、6、7、10。
我知道如何使用子集化 ([]) 来做到这一点,但是当级别数很大时(比如 10 个或更多,而不是只有 3 个(如上所述)),子集化变得乏味。
abind
库有函数 abind
可以帮助你做你想做的事。
我实现了一个包含所有所需范围的列表,然后使用该列表构建具有第三维的新数组。 along
参数告诉 abind
在第三个维度中添加。
subsets <- list(c(1,2),c(8:10),c(3,4,5,6,7))
# first array
x <- array(sample(subsets[[1]],25,replace=T),dim=c(5,5))
# 2:n arrays added to x
for (i in 2:length(subsets)) {
x <- abind(x,array(sample(subsets[[i]],25,replace=T),dim=c(5,5)),along=3)
}