几周前我一直在做类似的事情 . 这是一个可能的解决方案,它是从头开始编写的,所以它是一种beta版本或类似的东西 . 我会尝试通过从代码中删除循环来改进它...
主要思想是编写一个需要2(或3)个参数的函数 . 第一个是 data.frame ,其中包含从问卷中收集的数据,第二个是具有正确答案的数字向量(这仅适用于单选问卷) . 或者,您可以添加第三个参数,该参数将返回带有最终得分的数字向量,或者带有嵌入式得分的data.frame .
fscore
if (ncol(x) != length(sol)) {
stop('Number of items differs from length of correct answers!')
} else {
inc
for (i in 1:ncol(x)) {
inc[,i]
}
if (output == 'numeric') {
res
} else if (output == 'data.frame') {
res
} else {
stop('Type not supported!')
}
}
return(res)
}
我'll try to do this in a more elegant manner with some *ply function. Notice that I didn' t把 na.rm 论点......会那样做
# create dummy data frame - values from 1 to 5
set.seed(100)
d
# create solution vector
sol
现在应用一个函数:
> fscore(d, sol)
[1] 6 4 2 4 4 3 3 6 2 6
如果传递data.frame参数,它将返回修改后的data.frame . 我会尝试修复这个...希望它有所帮助!