Я просто хочу заполнить эту матрицу, я знаю, что это очень простая проблема, но я совсем не хорош. Я не буду использовать эти цифры в матрице. Я пытался использовать для l oop, но проблема в том, что l oop показывает только последнюю итерацию. Я повторяю, я не хочу цифры от 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
. Я хочу сделать еще одну переменную k
от 1 до 3. Я пробовал это, но l oop показывает мне только значение 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 в этой части l oop: 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
Но для l oop я покажу только последнюю итерацию:
# [1] 4 4 4 4 4 4 4 4 4
Я хочу следующий результат:
[1] 5 2 3 8 1 6 7 9 4