【发布时间】:2020-11-12 23:13:09
【问题描述】:
我有想要在 R 中评分的测验数据,所以我编写了一个 ScoreQuiz 函数:
ScoreQuiz <- function(x) {
#Q1 Ans: C; Q2 Ans: D
x$Q1_Score <- lapply(x[,"Q1"], function(x) {as.integer(x == "C")} )
x$Q2_Score <- lapply(x[,"Q2"], function(x) {as.integer(x == "D")} )
## Doesn't work
## x$Q1_Score <- unlist(x$Q1_Score)
score.list <- c("Q1_Score", "Q2_Score")
# commented because of error
#x$Total_Score <- apply(x[score.list], 1, sum)
return(x)
}
df <- data.frame("SubID" = 1:12, "Q1" = c("A","C","D"), "Q2"= c("D","A","B"))
ScoreQuiz(df)
结果
x$Q1_Score <- lapply(x[,"Q1"], function(x) {as.integer(x == "C")} )
返回一个列表
$ Q1_Score:List of 12
..$ : int 0
..$ : int 1
所以我无法计算函数内的总分。 但是,我可以在函数之外取消列出,然后计算总分。
是否可以在函数内部取消列出,或者更好的是,让我在不使用列表的情况下获得 Q1_Score?
【问题讨论】: