R терпит неудачу с "сравнение этих типов не осуществлено" - PullRequest
0 голосов
/ 28 марта 2020
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

1 Ответ

0 голосов
/ 28 марта 2020

Насколько я понимаю, вы пытаетесь проверить с помощью логического оператора "==", точно ли

formA[,2:51] "равно" formA$AKey

но class(formA[,2:51]) - это data.frame, а class(formA$AKey) - это factor!

Следовательно, они никогда не могут быть равны в R, и поэтому вы получаете сообщение об ошибке.

Проверьте это с помощью:

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

Я предлагаю вам попытаться привести formA[,2:51] и formA$AKey к одному и тому же классу и только затем использовать логический оператор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...