我如何填充这个矩阵(然后将其概括为 3D 数组)循环并使用条件?在 R

How can i fill this matrix (then generalize it to an 3D-array) whit a loop and using conditions too? in R

我只想填这个矩阵,我知道这是一个很简单的问题,但我一点都不擅长。 我不会在矩阵中使用这些数字。 我试过 for 循环,但问题是这个循环只显示最后一次迭代。 我再说一遍,我不想要从 1 到 9 的数字。 我有这个:

(mat<-matrix(0, nrow = 3, ncol = 3))
for (i in 1:3) {
  for (j in 1:3) {
    if (j==1 & i==1) {
      mat[i,j]=6
    } else if (j==1 & i==2) {
      mat[i,j]=7
    } else if (j==1 & i==3) {
      mat[i,j]=8
    }
  }
}

我想要一个不带条件的代码& i==1, & i==2, & i==3。 我想从 1 到 3 创建另一个变量 k。我试过了,但是循环只显示 3 中的值。 太感谢了。

编辑:我将向您展示一个我想解决的例子。你会看到那是关于同样的问题。我有下一个数据框:

base2<-c(  20, 15, 17, 23, 19, 21, 16, 22, 18)
base2.1<-c( 6,  5,  3,  4,  1,  7,  2,  9,  8)
base3<-data.frame(base2,base2.1)
names(base3)=c("age","mean")

base3

我想填充一个向量vec,其中vec[1]=5(因为如您所见,age=15),vec[2]=2(因为,age=16)等等,等等。

我只对第一个元素进行了尝试:

(vec<-c(rep(0,length(base3$mean))))

for (i in 1:length(base3$mean)) {
  if (base3$age[i]==15) {
    vec[1]=base3$mean[which(base3$age==15)]
      } 
}
vec

当然,我不想将数字 1 放在循环的这一部分:vec[1]=base3$mean[which(base3$age==15)

如果我想填充整个向量,我有这个:

for (i in 1:length(base3$mean)) {
  for (j in sort(base3$age)) {
vec[i]=base3$mean[which(base3$age==j)]  
 }
}
vec

但是 foor 循环只显示最后一次迭代:

# [1] 4 4 4 4 4 4 4 4 4

我想要下一个结果:

[1] 5 2 3 8 1 6 7 9 4

这只是order向量age并使用索引返回索引向量mean

i <- order(base3$age)
vec <- base3$mean[i]

vec
#[1] 5 2 3 8 1 6 7 9 4

help("order"),与sort的区别。
一行是

vec <- base3$mean[order(base3$age)]