对不起,如果这是一个基本问题。我到处寻找帮助,似乎无法找到答案。基本上我有两个数据框,一个是“答案密钥”,答案从第3列开始。
和一个包含50名学生答案的主数据框。
学生ID在第一栏,答案从第三栏开始。
如果问题是对还是错,我如何构造一个for循环来返回一个TRUE或FALSE的向量或数据框?感谢您的帮助!这让我难过了一个星期
答案 0 :(得分:0)
如果你真的想在R中使用循环:
all_results <- NULL
for (i in 1:nrow(results)){
answer <- cbind(results[i,1], key[3:ncol(key)] == results[i,3:ncol(results)])
all_results <- rbind(all_results, answer)
}
这应该会在第一列中为您提供一个包含学生ID的表格,以及每个问题的回答是真是假。
答案 1 :(得分:0)
考虑转置数据并进行列比较。使用data.table的小例子:
library(data.table)
set.seed(420666)
temp <- data.table("ASD" = sample(letters), "student1" = sample(letters), "student2" = sample(letters))
temp[1:5, student2 := ASD]
temp[, .SD == ASD, .SDcols = c("student1", "student2")]
student1 student2
[1,] FALSE TRUE
[2,] FALSE TRUE
[3,] FALSE TRUE
[4,] FALSE TRUE
[5,] FALSE TRUE
[6,] FALSE FALSE
[7,] FALSE FALSE
[8,] FALSE FALSE
[9,] FALSE TRUE
[10,] FALSE FALSE
[11,] FALSE FALSE
[12,] FALSE FALSE
[13,] FALSE FALSE
[14,] FALSE FALSE
[15,] FALSE FALSE
[16,] FALSE FALSE
[17,] FALSE FALSE
[18,] FALSE FALSE
[19,] FALSE FALSE
[20,] FALSE FALSE
[21,] TRUE FALSE
[22,] FALSE FALSE
[23,] FALSE FALSE
[24,] FALSE FALSE
[25,] FALSE FALSE
[26,] FALSE FALSE