如何使用循环和使用条件来填充此矩阵(然后将其推广到3D数组)?在R
我只想填写这个矩阵,我知道这是一个很容易的问题,但我一点都不擅长。 我不会在矩阵中使用这些数字。 我尝试过for循环,但问题是这个循环只显示最后一次迭代。 我重复一遍,我不想要从1到9的数字。 我有这个:如何使用循环和使用条件来填充此矩阵(然后将其推广到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
(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)]