我有这个值(简化示例):
a #class numeric
[1] 1 5 7 6 9
和这个数组:
res.tot <- array(NA,dim=c(2,1,5))
我需要以res.tot
的值填充数组a
:
[[1]]
[1]
[1] 1
[2] 1
[[2]]
[1]
[1] 5
[2] 5
...
[[5]]
[1]
[1] 9
[2] 9
数组res.tot
中的重复a
的每个值2次,每个重复的a
值占用不同的z维度。
我试着以这种方式使用for
循环:
for (i in 1:length(a)){
res.1 <- data.frame(rep(a[i],2))
res.tot[,,i] <- res.1
}
告诉我:
Error in res.tot.1[, , i] <- res.1 : incorrect number of subscripts
如何使用for loop
或lapply
功能?
答案 0 :(得分:1)
这是一个强力解决方案:
> a <- c(1,5,7,6,9)
> res.tot <- array(NA,dim=c(2,1,5))
> for (i in 1:(dim(res.tot)[1])) {
+ for (j in 1:(dim(res.tot)[2])) {
+ for (k in 1:(dim(res.tot)[3])) {
+ res.tot[i,j,k] <- a[k]
+ }
+ }
+ }
> res.tot
, , 1
[,1]
[1,] 1
[2,] 1
, , 2
[,1]
[1,] 5
[2,] 5
, , 3
[,1]
[1,] 7
[2,] 7
, , 4
[,1]
[1,] 6
[2,] 6
, , 5
[,1]
[1,] 9
[2,] 9
这是一个单线解决方案:
> res.tot[] <- rep(a,each=2)
> res.tot
, , 1
[,1]
[1,] 1
[2,] 1
, , 2
[,1]
[1,] 5
[2,] 5
, , 3
[,1]
[1,] 7
[2,] 7
, , 4
[,1]
[1,] 6
[2,] 6
, , 5
[,1]
[1,] 9
[2,] 9