首页 > 解决方案 > R 因“未实现这些类型的比较”而失败

问题描述

domainA <-read.csv("/Users/keke/Desktop/Data.and.Domains/Domains FormA.csv",header=TRUE, sep=",")
domainB <-read.csv("/Users/keke/Desktop/Data.and.Domains/Domains FormB.csv",header=TRUE, sep=",")
formA <-read.csv("/Users/keke/Desktop/Data.and.Domains/FormA.csv",header=FALSE, sep=",")
formB <-read.csv("/Users/keke/Desktop/Data.and.Domains/FormB.csv",header=FALSE, sep=",")

formA <- t(formA)
formB <- t(formB)
formA <- as.data.frame(formA)
formB <- as.data.frame(formB)
formA <- formA[-1,]
formB <- formB[-1,]


students.a <- vector("character")
for(i in 1:50) {
  students.a[i] <-2*i-1
}
students.b <- vector("character")
for(i in 1:50){
  if(i==32) next
students.b[i] <- 2*i
}
students.b <- students.b[(!is.na(students.b))]
students.a <- c("AKey", students.a)
students.b <- c("BKey", students.b)
colnames(formA) <- students.a
colnames(formB) <- students.b

TestA<- cbind(formA,domainA)
TestB<- cbind(formB,domainB)
ID <- c(students.a[2:51], students.b[2:50])
EXAM <- c(rep("A", 50), rep("B", 49))
stID <-c(students.A[2:51], students.B[2:50])
Exam <- c(rep("A",50),rep("B",49))

DetA<- formA[,2:51]==formA$Akey
  hitormissA <- formA[,2:51]==formA$AKey
  hitormissA <- apply(hitormissA, 2, as.numeric)
  scoreA <- apply(hitormissA, 2, sum)
  percentageA <- apply(hitormissA, 2, mean)
  percentageA <- percentageA*100

代码不是从 hitormiss A 运行的。错误说

Incompatible methods ("Ops.data.frame", "Ops.factor") for "=="Error in formA[, 2:51] == formA$AKey : 
  comparison of these types is not implemented

标签: r

解决方案


据我了解,您正在尝试通过逻辑运算符“==”进行检查,如果

formA[,2:51]“完全等于”formA$AKey

but class(formA[,2:51])是一个data.frame,whileclass(formA$AKey)是一个factor

因此它们在 R 中永远不可能相等,因此您会收到错误消息。

通过以下方式检查:

class(formA[,2:51]) == class(formA$AKey)

我建议您尝试将formA[,2:51]formA$AKey带到同一个班级,然后才使用逻辑运算符。


推荐阅读