knitr::opts_chunk$set(echo = TRUE, eval=F) library(drake) library(econDV) library(dplyr)
library(drake) library(rmd2drake) library(dplyr) library(googleclassroom) library(readr) library(rmdgrader) library(purrr) library(rlang) library(testthat) library(withr) library(lubridate) library(stringr) rprojroot::is_rstudio_project$make_fix_file() -> .root .root <- function(){ "/Users/martinl/Github/course-dashboard-programming-for-data-science" } datafilename <- file.path(.root(),params$gradingFolder,params$title,"data4step3.Rdata") load(datafilename, envir = .GlobalEnv) gradeSavingFilename <- file.path(.root(),params$gradingFolder,params$title,"data4step4.Rdata") allValues <<- objectValues$studentValues correctValues <<- allValues[[1]] studentValues <<- allValues[-1] mgetxy <- rmdgrader::generate_mgetxy(basename(allRmds[-1])) studentRmds <- allRmds[-1] submissionPath <- file.path( .root(), params$submissionFolder, params$title ) mfile.edit <- mfile.editFunctional(studentRmds, submissionPath)
undebug(allequalService) ae113 <- allequalService('ans113') ae113$result$messageGroups ae113$generate_xy4messageGroups(mgetxy)
ae113check = { ae113$check_messageGroups$G1() # ae113$xy[[1]]$Final_410672033.Rmd$x -> x # ae113$xy[[1]] %>% # purrr::map( # ~{ # unlist(.x$x$pickExactHistory) %>% # identical( # .x$y$pickExactHistory # ) # } # ) # map( # ae113$xy[[1]], # ~with( # .x, # { # identical( # unlist(.x$x$pickHistory), # .x$y$pickHistory) # } # ) # ) # map( # ae113$xy[[1]], # ~identical(unlist(.x$x$pickByFlag(F)), # .x$y$pickByFlag) # ) ae113$check_messageGroups$G1grade$comment('minor unlist problem with pickByFlag as function.') ae113$check_messageGroups$G1grade$grade(0.34) ae113$check_messageGroups$G2() ae113$check_messageGroups$G2grade$grade(0.35) ae113$check_messageGroups$G3() ae113$check_messageGroups$G3grade$grade(0) ae113$check_messageGroups$G4() ae113$check_messageGroups$G4grade$grade(0.25) ae113$check_messageGroups$G4grade$comment('miss pickByFlag') ae113$check_messageGroups$G5() ae113$check_messageGroups$G5grade$comment('miss pickByFlag') ae113$check_messageGroups$G5grade$grade(0.25) ae113$check_messageGroups$G6() ae113$check_messageGroups$G6grade$grade(0.25) ae113$check_messageGroups$G6grade$comment('use str_detect wrongly in pickExactHistory') ae113$check_messageGroups$G7() ae113$check_messageGroups$G7grade$grade(0.1) ae113$check_messageGroups$G8() ae113$check_messageGroups$G8grade$comment('pickExact with wrong usage of str_detect') ae113$check_messageGroups$G8grade$grade(0.05) ae113$check_messageGroups$G9() ae113$check_messageGroups$G9grade$comment('sample inside program; wrong pickByFlag') ae113$check_messageGroups$G9grade$grade(0.2) ae113$check_messageGroups$G10() ae113$check_messageGroups$G10grade$comment('put pickByFlag as function') ae113$check_messageGroups$G10grade$grade(0.35) ae113$check_messageGroups$G11() ae113$check_messageGroups$G11grade$grade(0) ae113$check_messageGroups$G12() ae113$check_messageGroups$G12grade$grade(0.1) ae113$check_messageGroups$G13() ae113$check_messageGroups$G13grade$comment('complicate the question') ae113$check_messageGroups$G13grade$grade(0.05) # View(ae113$result$table_messageGroups[13,]) # mfile.edit$Final_410973024.Rmd() }
grade113 <- ae113$extract_grades()
ae112 <- allequalService('ans112') ae112$generate_xy4messageGroups(mgetxy) # get_gradesFromAe <- function(ae112){ # ae112$.yield_messageGroupTable() # list_grade112 <- grade_by_all.equalMessages(ae112) # grade112 <- list_grade112$grade # grade112[ # is.na(grade112) # ] <- 0 # grade112 # }
ae112check={ ae112$check_messageGroups$G1() ae112$check_messageGroups$G1grade$grade(0) ae112$check_messageGroups$G2() ae112$check_messageGroups$G2grade$comment('categories2有可能不只一個,不能只用"=="') ae112$check_messageGroups$G2grade$grade(0.35) ae112$check_messageGroups$G3() ae112$check_messageGroups$G3grade$comment('categories2有可能不只一個,不能只用"=="') ae112$check_messageGroups$G3grade$grade(0.35) ae112$check_messageGroups$G4() ae112$check_messageGroups$G4grade$grade(0) ae112$check_messageGroups$G5() ae112$check_messageGroups$G5grade$grade(0.4) ae112$check_messageGroups$G6() ae112$check_messageGroups$G6grade$grade(0.1) ae112$check_messageGroups$G6grade$comment('Wrong usage of try(), but courageous to do so.') ae112$check_messageGroups$G7() ae112$check_messageGroups$G7grade$grade(0) ae112$check_messageGroups$G8() ae112$check_messageGroups$G8grade$grade(0.05) ae112$check_messageGroups$G9() ae112$check_messageGroups$G9grade$grade(0.01) ae112$.yield_messageGroupTable() View(ae112$result$table_messageGroups) # mfile.edit$Final_410878023() }
grade112 <- ae112$extract_grades()
jsonlite::fromJSON("https://www.dropbox.com/s/t09nrzwx8mw6azn/courses107.json?dl=1") -> courses107 source('https://www.dropbox.com/s/g11m7nanbzva7hf/finalChallenge.R?dl=1') set.seed(2038) source <- sample(courses107$應修系級, 200) source categories <- c("外語系", "統計系") transform111true = transformFunctional(source=source, categories=categories, followByAlnum=TRUE) transform111false = transformFunctional(source=source, categories=categories, followByAlnum=FALSE) ae111 <- list( true = allequalService('ans111', .transform = transform111true), false = allequalService('ans111', .transform = transform111false)) ae111$true$generate_xy4messageGroups(mgetxy) ae111$false$generate_xy4messageGroups(mgetxy)
ae111check = { ae111$true$check_messageGroups$G1() ae111$true$check_messageGroups$G1grade$grade(0) ae111$false$check_messageGroups$G1() ae111$false$check_messageGroups$G1grade$grade(0) }
grade111 = { compute_gradesFromMultipleAes(ae111) -> df_grades setNames(df_grades$mean, df_grades$Rmd) }
ae123 <- allequalService('ans123') ae123$generate_xy4messageGroups(mgetxy)
ae123check = { ae123$.yield_messageGroupTable() View(ae123$result$table_messageGroups) ae123$check_messageGroups$G1() ae123$check_messageGroups$G1grade$grade(0) ae123$check_messageGroups$G2() ae123$check_messageGroups$G2grade$comment('wrong object name for formajor. no debuction this time.') ae123$check_messageGroups$G2grade$grade(0.35) ae123$check_messageGroups$G3() ae123$check_messageGroups$G3grade$grade(0) ae123$check_messageGroups$G4() ae123$check_messageGroups$G4grade$comment('wrong in forMajors') ae123$check_messageGroups$G4grade$grade(0.2) ae123$check_messageGroups$G5() ae123$check_messageGroups$G5grade$comment('wrong in forMajors') ae123$check_messageGroups$G5grade$grade(0.2) ae123$check_messageGroups$G6() ae123$check_messageGroups$G6grade$grade(0) ae123$check_messageGroups$G7() ae123$check_messageGroups$G7grade$grade(0) ae123$check_messageGroups$G8() ae123$check_messageGroups$G8grade$grade(0) ae123$check_messageGroups$G9() ae123$check_messageGroups$G9grade$grade(0) ae123$check_messageGroups$G10() ae123$check_messageGroups$G10grade$comment('interesting way to count appliedMajors') ae123$check_messageGroups$G10grade$grade(0.1) ae123$check_messageGroups$G11() ae123$check_messageGroups$G11grade$comment('interesting way to count appliedMajors, but the list formation of forMajors kills the effect.') ae123$check_messageGroups$G11grade$grade(0.8) }
grade123 = ae123$extract_grades()
ae122 <- allequalService('ans122') ae122$generate_xy4messageGroups(mgetxy)
ae122check= { # ae122$.yield_messageGroupTable() # View(ae122$result$table_messageGroups) ae122$check_messageGroups$G1() ae122$check_messageGroups$G1grade$grade(0) ae122$check_messageGroups$G2() ae122$check_messageGroups$G2grade$grade(0) ae122$check_messageGroups$G3() ae122$check_messageGroups$G3grade ae122$check_messageGroups$G3grade$grade(0.5) ae122$check_messageGroups$G4() ae122$check_messageGroups$G4grade$comment('tiny error, forget to put、back') ae122$check_messageGroups$G4grade$grade(0.48) ae122$check_messageGroups$G5() ae122$check_messageGroups$G5grade$grade(0) # mfile.edit$Final_410973005.Rmd() }
grade122 = ae122$extract_grades()
major_grade="財政系" transform121a = transformFunctional(major_grade=major_grade,type="必") transform121b = transformFunctional(major_grade=major_grade,type="選") ae121 <- list( a = allequalService('ans121', .transform = transform121a), b = allequalService('ans121', .transform=transform121b) ) ae121$a$generate_xy4messageGroups(mgetxy) ae121$b$generate_xy4messageGroups(mgetxy)
ae121check = { ae121$a$check_messageGroups$G1() ae121$a$check_messageGroups$G1grade$grade(0) ae121$b$check_messageGroups$G1() ae121$b$check_messageGroups$G1grade$grade(0) }
grade121 = { compute_gradesFromMultipleAes(ae121) -> df_grades setNames( df_grades$mean, df_grades$Rmd ) }
ae133 <- allequalService('ans133') ae133$generate_xy4messageGroups(mgetxy)
ae133check={ # ae133$.yield_messageGroupTable() # View(ae133$result$table_messageGroups) ae133$check_messageGroups$G1() ae133$check_messageGroups$G1grade$grade(0) ae133$check_messageGroups$G2() ae133$check_messageGroups$G2grade$grade(0.4) ae133$check_messageGroups$G3() ae133$check_messageGroups$G3grade$grade(0) ae133$check_messageGroups$G4() ae133$check_messageGroups$G4grade$grade(0.3) ae133$check_messageGroups$G5() ae133$check_messageGroups$G5grade$grade(0.25) # # ae133$xy[[4]]$Final_410773028.Rmd$x$ # # mfile.edit$Final_410973065.Rmd() }
grade133 <- ae133$extract_grades()
ae132 <- allequalService('ans132') ae132$generate_xy4messageGroups(mgetxy)
ae132check = { # ae132$.yield_messageGroupTable() # View(ae132$result$table_messageGroups) ae132$check_messageGroups$G1() ae132$check_messageGroups$G1grade$grade(0) ae132$check_messageGroups$G2() ae132$check_messageGroups$G2grade$grade(0.6) ae132$check_messageGroups$G3() ae132$check_messageGroups$G3grade$comment('good on wday element.') ae132$check_messageGroups$G3grade$grade(0.2) ae132$check_messageGroups$G4() ae132$check_messageGroups$G4grade$grade(0.6) ae132$check_messageGroups$G5() ae132$check_messageGroups$G5grade$grade(0) # mfile.edit$Final_410774205.Rmd() }
grade132 <- ae132$extract_grades()
ae131 <- allequalService('ans131') ae131$generate_xy4messageGroups(mgetxy)
ae131check = { ae131$check_messageGroups$G1() ae131$check_messageGroups$G1grade$grade(0) ae131$check_messageGroups$G2() ae131$check_messageGroups$G2grade$grade(0) ae131$check_messageGroups$G3() ae131$check_messageGroups$G3grade$grade(0) # mfile.edit$Final_410778033.Rmd() }
grade131 = ae131$extract_grades()
ae143 <- allequalService('ans143') ae143$generate_xy4messageGroups(mgetxy)
ae143check = { # ae143$.yield_messageGroupTable() # View(ae143$result$table_messageGroups) ae143$check_messageGroups$G1() ae143$check_messageGroups$G1grade$grade(0) ae143$check_messageGroups$G2() ae143$check_messageGroups$G2grade$grade(0) ae143$check_messageGroups$G3() ae143$check_messageGroups$G3grade$grade(0.25) ae143$check_messageGroups$G4() ae143$check_messageGroups$G4grade$grade(0.1) ae143$check_messageGroups$G5() ae143$check_messageGroups$G5grade$grade(0) ae143$check_messageGroups$G6() ae143$check_messageGroups$G6grade$comment("rmd structure sabotaged.") ae143$check_messageGroups$G7() ae143$check_messageGroups$G7grade$grade(0.5) ae143$check_messageGroups$G8() ae143$check_messageGroups$G8grade$comment('mistakes due to unfixed char20 problem.') ae143$check_messageGroups$G8grade$grade(0.4) ae143$check_messageGroups$G9() ae143$check_messageGroups$G9grade$comment('minor error: listA should be list') ae143$check_messageGroups$G9grade$grade(0.45) ae143$check_messageGroups$G10() ae143$check_messageGroups$G10grade$grade(0.4) ae143$check_messageGroups$G11() ae143$check_messageGroups$G11grade$grade(0.3) ae143$check_messageGroups$G12() ae143$check_messageGroups$G12grade$grade(0.5) ae143$check_messageGroups$G13() ae143$check_messageGroups$G13grade$grade(0) # ae143$check_messageGroups$G14() # ae143$check_messageGroups$G14grade$grade(0) # ae143$xy[[12]]$Final_410973024.Rmd$y # length(na.omit(unlist(ae143$xy[[7]]$Final_410774205.Rmd$x$listA))) # ae143$xy[[7]]$Final_410774205.Rmd$y$listA # # mfile.edit$Final_410973065.Rmd() }
grade143 <- ae143$extract_grades()
ae142 <- allequalService('ans142') ae142$generate_xy4messageGroups(mgetxy)
ae142check = { ae142$check_messageGroups$G1() ae142$check_messageGroups$G1grade$grade(0) ae142$check_messageGroups$G2() # ae142$xy[[2]]$Final_410678019.Rmd$x %>% map(sum) # ae142$xy[[2]]$Final_410678019.Rmd$y ae142$check_messageGroups$G2grade$comment('forget to filter semester ==1 and need to sum.') ae142$check_messageGroups$G2grade$grade(0.5) ae142$check_messageGroups$G3() ae142$check_messageGroups$G3grade$comment('forget to filter out only 1st semester') ae142$check_messageGroups$G3grade$grade(0.85) ae142$check_messageGroups$G4() ae142$check_messageGroups$G4grade$grade(0) ae142$check_messageGroups$G5() ae142$check_messageGroups$G5grade$comment('forget to filter out only 1st semester') ae142$check_messageGroups$G5grade$grade(0.85) # mfile.edit$Final_410874230.Rmd() }
grade142=ae142$extract_grades()
ae2 <- allequalService('ans2') ae2$generate_xy4messageGroups(mgetxy)
ae2check = { ae2$check_messageGroups$G1() ae2$check_messageGroups$G1grade$grade(0) ae2$check_messageGroups$G2() ae2$check_messageGroups$G2grade$grade(0) ae2$check_messageGroups$G3() ae2$.yield_messageGroupTable() View(ae2$result$table_messageGroups) map( ae2$xy[[3]], function(.x) { R.utils::withTimeout( try( { .x$x("民國101年8月27日") }, silent = T ), timeout = 5 ) }) -> results list_msg_rmd_pairs <- list( msg=unlist(results), rmd=names(ae2$xy[[3]]) ) ae <- ae2 subcategorise_byMsgRmdPairs(ae2, list_msg_rmd_pairs) ae2$subcat$cat_errors[[1]]$el_values ae2$subcat$cat_errors[[1]]$el_values ae2$subcat$cat_errors[[1]]$el_names ae2$subcat$cat_errors[[1]]$comment <- 'only put textbook get_horoscope function there.' ae2$subcat$cat_errors[[1]]$grade <- 0 ae2$subcat$cat_errors[[2]]$el_names ae2$subcat$cat_errors[[2]]$el_values ae2$subcat$cat_errors[[2]]$comment <- ae2$subcat$cat_errors[[1]]$comment ae2$subcat$cat_errors[[3]]$el_names ae2$subcat$cat_errors[[3]]$el_values ae2$subcat$cat_errors[[3]]$comment <- "almost correct" ae2$subcat$cat_errors[[3]]$grade <- 0.8 ae2$subcat$cat_errors[[4]]$el_names ae2$subcat$cat_errors[[4]]$el_values ae2$subcat$cat_errors[[4]]$comment <- 'nice twist on task condition' ae2$subcat$cat_errors[[4]]$grade <- 0.1 ae2$subcat$cat_errors[[5]]$el_names ae2$subcat$cat_errors[[5]]$el_values ae2$subcat$cat_errors[[6]]$el_names ae2$subcat$cat_errors[[6]]$el_values ae2$subcat$cat_errors[[7]]$el_names ae2$subcat$cat_errors[[7]]$el_values }
grade2 = { grade2_init <- ae2$extract_grades() grade2 <- ae2$subcat$accommodate_grades(grade2_init) grade2 }
# save(ae113, ae112, ae123, ae122, ae111, ae121, ae131, ae132, ae133, ae142, ae143, ae2, file="final_ae.Rdata") load("final_ae.Rdata")
tb_grades = { grade11 <- getMaxGrade(grade111, grade112, grade113) grade12 <- getMaxGrade(grade121, grade122, grade123) grade13 <- getMaxGrade(grade131, grade132, grade133) grade14 <- getMaxGrade(grade142, grade143) grade2 tb_gradesFinal <- tb_grades <- merge_gradeVectors(grade11, grade12, grade13, grade14, grade2) tb_gradesFinal$total <- rowSums(tb_grades[, -1]) tb_gradesFinal }
算了一下,總共10題(5+2+2+1),所以我覺得可以考慮每填都是一分。這樣剛好就是Google Classroom表定的10分。
You don't need this if you have updated rmdgrader package.
tb_grades = convert_gradeList2dataframe( ans111=grade111, ans112=grade112, ans113=grade113, ans121=grade121, ans122=grade122, ans123=grade123, ans131=grade131, ans132=grade132, ans133=grade133, ans142=grade142, ans143=grade143, ans2=grade2)
records_gradeComment <- generate_recordGradeCommentsFromTb_gradesWithoutComments(tb_grades)
saveGrades = { save(tb_grades, records_gradeComment, file=gradeSavingFilename) gradeSavingFilename }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.