在R中的三维数组中将n维加在一起
Add together n-dimensions in a three dimensional array in R
大家好!我有一个非常直接的问题。我有一个名为 w 的三维数组,如下所示:
> w
, , 1
[,1] [,2] [,3]
[1,] 0.5 0.5 0.5
[2,] 0.5 0.5 0.5
, , 2
[,1] [,2] [,3]
[1,] 0.1 0.1 1.0
[2,] 0.5 0.5 0.5
现在,它只是一个表示,所以这不是实际数据。
问题是我把三维的元素加在一起,比如w[1, 1, 1] + w[1, 1, 2] + w[1, 1, 3]
,但我不知道三维会有多少成员。我不能在 for 循环中执行此操作,因为它已经在嵌套的 for 循环中(两个 for 循环)。
所以,我基本上要加在一起[=13=]
我试过
for (k in 1:dims(w)[3]) # it is one of the for loops
lapply(w[, , k], '+')
但它只打印 w[, , 1]
,仅此而已。
在 C++ 中,我想你会简单地写 y += w[ , n]。
我真的很感激关于我应该如何处理这个问题或解决方案的一些想法:)。
*编辑:一个非常尴尬的错字。
看起来这符合您的要求:
# sample data
w<-array(sample(1:4),dim=c(3,3,3))
# sum over dimensions 1 and 2
apply(w, MARGIN=c(1, 2), sum)
希望对您有所帮助!
大家好!我有一个非常直接的问题。我有一个名为 w 的三维数组,如下所示:
> w
, , 1
[,1] [,2] [,3]
[1,] 0.5 0.5 0.5
[2,] 0.5 0.5 0.5
, , 2
[,1] [,2] [,3]
[1,] 0.1 0.1 1.0
[2,] 0.5 0.5 0.5
现在,它只是一个表示,所以这不是实际数据。
问题是我把三维的元素加在一起,比如w[1, 1, 1] + w[1, 1, 2] + w[1, 1, 3]
,但我不知道三维会有多少成员。我不能在 for 循环中执行此操作,因为它已经在嵌套的 for 循环中(两个 for 循环)。
所以,我基本上要加在一起[=13=]
我试过
for (k in 1:dims(w)[3]) # it is one of the for loops
lapply(w[, , k], '+')
但它只打印 w[, , 1]
,仅此而已。
在 C++ 中,我想你会简单地写 y += w[ , n]。
我真的很感激关于我应该如何处理这个问题或解决方案的一些想法:)。
*编辑:一个非常尴尬的错字。
看起来这符合您的要求:
# sample data
w<-array(sample(1:4),dim=c(3,3,3))
# sum over dimensions 1 and 2
apply(w, MARGIN=c(1, 2), sum)
希望对您有所帮助!