首页 > 解决方案 > R:For循环仅更新向量中的最后一个元素

问题描述

我遵循的逻辑是;

-> 创建一个包含 1000 个元素的结果向量

-> 使用 for 循环,在每次迭代中将旧样本值“sorting_hat”替换为新值

-> 使用 if else 语句将结果向量中的第 i 次迭代替换为依赖于新采样值“sorting_hat”的字符串

all_student_houses <- rep(0, 1000)
total_students = 1000
student_number = 1


for (student_number in total_students) {

  sorting_hat <- sample(x = 1:4, size = 1, replace = TRUE, prob = c(9/41, 8/41, 14/41, 10/41) )

  if (sorting_hat == 1) {
    all_student_houses[student_number] <- "Slytherin"
    } else if (sorting_hat == 2) {
    all_student_houses[student_number] <- "Gryffindor"
    } else if (sorting_hat == 3) {
    all_student_houses[student_number] <- "Ravenclaw"
    } else {
    all_student_houses[student_number] <- "Hufflepuff"
    }

  }

运行后我的向量输出是:

>all_student_houses
[995] "0"         "0"         "0"         "0"         "0"         "Slytherin"

我希望这个向量的每个元素都被 ifelse 语句中的四个字符串之一替换,而不仅仅是最后一个元素。目前是什么让我绊倒?

标签: rfor-loopif-statement

解决方案


尝试:

 for (student_number in 1:total_students)

您应该指定for 循环的范围。


推荐阅读