【问题标题】:Making a matrix that gives a vector as output? - R制作一个将向量作为输出的矩阵? -R
【发布时间】:2021-04-25 03:00:43
【问题描述】:

想法是矩阵包含学生(行,studerende1,2,3),成绩(列,-3,00,02,4,7,10,12)和分配数量(列,antal opgaver)。我制作了一个空向量,返回时应填写最终成绩。

然后代码应该像这样对成绩进行排序:

  1. 如果学生有 1 项作业,则最终成绩将是该特定作业的最终成绩。
  2. 如果学生有 2 份作业:期末成绩将是两者中最高的。

问题:我该如何处理?函数 + return(gradesFinal) 必须包含,因为它与分配相关。输出也应该是一个向量。

q <- matrix(c(1,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,1,2,2), ncol=8)
rownames(q) <-(c("studerende1", "studerende2", "studerende3"))
colnames(q) <- c("-3", "00", "02", "4", "7", "10", "12", "antal opgaver")

finalG <- c()

computeFinalGrades <- function(grades) {
for (i in 1:length(q$antal opgaver)){
if (matrix$antal opgaver[i] = 1){
finalG <- append(finalG, '-3')

return(gradesFinal)

screenshot of matrix since the table-function isn't working for me

【问题讨论】:

    标签: r matrix vector


    【解决方案1】:

    以下函数返回问题中定义的成绩的命名向量。名称是输入矩阵的行名。

    computeFinalGrades <- function(grades){
      grd <- colnames(grades)[-ncol(grades)]
      grd <- as.numeric(grd)
      x <- grades[, -ncol(grades)]
      apply(x, 1, function(i) max(grd[as.logical(i)]))
    }
    
    computeFinalGrades(q)
    #studerende1 studerende2 studerende3 
    #         -3           7          10 
    

    【讨论】:

    • 谢谢!稍后将对此进行调查。
    • 如何包含 return(gradesFinal)?
    • @Ailah 你不需要明确的return 指令,函数的最后一条指令返回你想要的值。 (而且没有gradesFinalapply语句的返回值直接返回给调用者,不赋值给变量。)
    猜你喜欢
    • 2016-02-09
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多