【问题标题】:Error in ans[npos] <- rep(no, length.out = len)[npos] : replacement has length zeroans[npos] <- rep(no, length.out = len)[npos] 中的错误:替换的长度为零
【发布时间】:2020-12-02 03:20:49
【问题描述】:

您好,我现在是一年级,还在学习 R 在线课程,我收到一条错误消息: “ans[npos]

dataGrade <- read.csv(file.choose(), fileEncoding = "UTF-8-BOM")

gradeColumn2 <- dataGrade[, 2]
twoGrades <- gradeColumn2[1:2]

ifelse(twoGrades[1] == gradeColumn2[3],
       cat("Grade", twoGrades[1],"is equal to Grade",gradeColumn2[3]),
       cat("Grade", twoGrades[1],"is not equal to Grade",gradeColumn2[3]))

csv文件中的数据是

【问题讨论】:

    标签: r


    【解决方案1】:

    由于您正在检查长度为 1 的条件,请使用 if/else 而不是 ifelse

    dataGrade <- data.frame(GRADE.A = c(79, 89, 93),
                            GRADE.B = c(90, 92, 91))
    
    gradeColumn2 <- dataGrade[, 2]
    twoGrades <- gradeColumn2[1:2]
    
    if(twoGrades[1] == gradeColumn2[3]) {
      cat("Grade", twoGrades[1],"is equal to Grade",gradeColumn2[3])
    } else{
        cat("Grade", twoGrades[1],"is not equal to Grade",gradeColumn2[3])
    }
    
    #Grade 90 is not equal to Grade 91
    

    【讨论】:

    • 虽然答案是正确的,但原因是ifelse()是条件元素选择,所以设计成返回值。您需要结构 if/else 来执行操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2017-01-25
    相关资源
    最近更新 更多