R将数组的每个元素乘以不同的数字

R Multiplying each element of an array by a different number

我正在尝试将数组的每个元素乘以一个整数(沿第一维)。棘手的是这个整数会随着每个元素而改变。

一个例子:

test <- array(dim = c(3,5,7))
test[1,,] <- 1
test[2,,] <- 10
test[3,,] <- 100

vec <- c(1,2,3)

我想要的结果是一个具有相同维度 (3,5,7) 且沿第一个维度的数组:

test[1,,] * vec[1]
test[2,,] * vec[2]
test[3,,] * vec[3]

这意味着

Result <- array(dim = c(3,5,7))
Result[1,,] <- 1
Result[1,,] <- 20
Result[1,,] <- 300

我认为我非常熟悉外部或应用等不同的功能,但我认为有更简单的方法,因为我有很多数据要处理。现在,我找到了外部函数,我应该 select 类似于结果的对角线。

有人可以帮忙吗?

怎么样

test*replicate(7, replicate(5, vec))

这样使用 apply 有什么问题?

sapply(1:length(vec), function(i) test[i,,]<<- test[i,,]*vec[i])

slice.index 在这里可能会有帮助

Result <- test * vec[slice.index(test, 1)]

在这种情况下你可以这样做

Result <- test*vec

请注意,这仅在要拆分和相乘的维度是第一个维度时才有效。