R 将多维数组中的所有值设置为0(如果没有);我不符合某些标准
如果我有一个二维数组: 创建两个不同长度的向量。R 将多维数组中的所有值设置为0(如果没有);我不符合某些标准,r,arrays,R,Arrays,如果我有一个二维数组: 创建两个不同长度的向量。 感谢创建一个逻辑表达式,根据第三维的长度将其复制到数组中并进行乘法(*) 数据 结果 vector1 <- c(5,9,3) vector2 <- c(10,11,12,13,14,15) # Take these vectors as input to the array. result <- array(c(vector1,vector2),dim = c(3,3,2)) result , , 1 [,1]
感谢创建一个逻辑表达式,
根据第三维的长度将其复制到数组中并进行乘法(*
)
数据
结果
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# Take these vectors as input to the array.
result <- array(c(vector1,vector2),dim = c(3,3,2))
result
, , 1
[,1] [,2] [,3]
[1,] 5 10 13
[2,] 9 5 14
[3,] 3 12 15
, , 2
[,1] [,2] [,3]
[1,] 7 8 14
[2,] 9 7 14
[3,] 1 12 22
result
, , 1
[,1] [,2] [,3]
[1,] 5 0 0
[2,] 0 5 0
[3,] 0 0 0
, , 2
[,1] [,2] [,3]
[1,] 7 0 0
[2,] 0 7 0
[3,] 0 0 0
i1 <- ((result[,,1] == 5)|(result[,,2] == 7))
result * replicate(dim(result)[3], i1)
#, , 1
#
# [,1] [,2] [,3]
#[1,] 5 0 0
#[2,] 0 5 0
#[3,] 0 0 0
#, , 2
# [,1] [,2] [,3]
#[1,] 7 0 0
#[2,] 0 7 0
#[3,] 0 0 0
vals <- c(5, 7)
for(i in seq_len(dim(result)[3])) {
result[,,i] <- result[,,i] *(result[,,i] == vals[i])
}
result <- array(c(5, 9, 3, 10, 5, 12, 13, 14, 15, 7, 9, 1, 8, 7,
12, 14, 14, 22), dim = c(3, 3, 2))