提问人:Léa Prasin 提问时间:3/28/2023 更新时间:3/28/2023 访问量:45
在 R 中循环遍历数组的多个切片
loop through multiple slices of an array in R
问:
我正在尝试遍历一个具有多个切片的数组,并希望我的结果每次都显示在相应的切片中(例如,我将向量乘以“m”,我希望向量显示在数组的切片“m”中的特定列中)。 但是,当我这样做时,每次循环时,循环都会覆盖前一个循环,这意味着我只得到最后一个切片和最大 m 的结果。
我用代码创建了一个虚拟数据,这样你就可以看到我要去哪里。有人可以帮我吗?
第一次尝试,更简单的代码:
for(m in 1:3){
array.try <- array(NA,
dim=c(8,
3,
3),
dimnames= list(c(1:8),
c("hello", "hi", "man"),
c("sheet", "damn", "hard")))
vector.try <- c(1:4)
array.try[,"hello",] <- rep(vector.try,
each = 2)
vector.try.2 <- c(5:8)
array.try[,"hi",] <- rep(vector.try.2,
each = 2)
vector.base <- rep(1,8)
array.try[,"man",m] <- vector.base*m
}#m
array.try
正如你所看到的,结果都在数组的最后一个切片中,并且是最大的“m”。 最重要的是,我真正想要的更接近于此:
for(m in 1:3){
for(n in 5:7){
array.try <- array(NA,
dim=c(8,
3,
3),
dimnames= list(c(1:8),
c("hello", "hi", "man"),
c("sheet", "damn", "hard")))
vector.try <- c(1:4)
array.try[,"hello",] <- rep(vector.try,
each = 2)
vector.try.2 <- c(5:8)
array.try[,"hi",] <- rep(vector.try.2,
each = 2)
vector.base[[n]] <- rep(1*n,8)
#this does not work. my goal is to get something similar as
#assign(paste("vector.base",n, sep =""), rep(1*n,8))
#because this formulations is annoying and brings all kinds of bugs I read online
end.vector <- c(vector.base[[n]])
#my goal here woulb be to have on vector with all the values
#of the various vector.base1, vector.base2,....
#so basically c(vector.base1, vector.base2,...)
array.try[,"man",m] <- end.vector*m
}
}#m
array.try
但我真正需要的主要是解决我的第一个问题,也就是填充数组的每个切片。
多谢!
莫德
答: 暂无答案
上一个:R 中使用数组进行矩阵切片
评论
array.try
array.try