Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用循环和使用条件来填充此矩阵(然后将其推广到3D数组)?在R_R_Loops_Matrix_Conditional Statements_Fill - Fatal编程技术网

如何使用循环和使用条件来填充此矩阵(然后将其推广到3D数组)?在R

如何使用循环和使用条件来填充此矩阵(然后将其推广到3D数组)?在R,r,loops,matrix,conditional-statements,fill,R,Loops,Matrix,Conditional Statements,Fill,我只想填写这个矩阵,我知道这是一个很容易的问题,但我一点都不擅长。 我不会在矩阵中使用这些数字。 我尝试过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

我只想填写这个矩阵,我知道这是一个很容易的问题,但我一点都不擅长。 我不会在矩阵中使用这些数字。 我尝试过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
    }
  }
}
for (i in 1:length(base3$mean)) {
  for (j in sort(base3$age)) {
vec[i]=base3$mean[which(base3$age==j)]  
 }
}
vec
我想填充一个向量
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
但是foor循环只显示最后一次迭代:

# [1] 4 4 4 4 4 4 4 4 4
我想要下一个结果:

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

这只是对向量
排序
年龄
并使用返回到索引向量
平均值
的索引

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

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

因此,您希望变量
k
中的数字代替数字
6、7、8
?请提供所需的输出。@RuiBarradas,请阅读我的编辑。@Adamm我已经输入了所需的输出。请看我的编辑,太好了!谢谢如果我想使用for循环或“apply()”族的任何函数,我该如何解决这个问题?(我将在一个非常大的数据集中执行此操作。谢谢你,大师!@Edgorelml你必须编写一个排序例程,使数据保持原始顺序,并将索引排序到向量中,最后返回索引。如果数据集非常大,你最好坚持使用R的排序例程。
i <- order(base3$age)
vec <- base3$mean[i]

vec
#[1] 5 2 3 8 1 6 7 9 4
vec <- base3$mean[order(base3$age)]