Если я понимаю, что вы хотите, вы можете использовать melt
для преобразования массива в data.frame, а затем использовать merge
для объединения его с другим фрагментом данных.Если вам нужен массив в конце, вы можете использовать acast
для преобразования data.frame обратно в массив.
# Sample data
n <- 10
d <- array(
rnorm(n^3),
dim = c(n,n,n),
dimnames = list(
One = LETTERS[1:n],
Two = LETTERS[1:n],
Three = LETTERS[1:n]
)
)
x <- data.frame( One=LETTERS[1:n], x=runif(n) )
library(reshape2)
d <- melt(d)
d <- merge( d, x, by="One", all=TRUE )
d$result <- d$value + d$x # Do something with the data
acast( d, One ~ Two ~ Three, value.var="result" )