Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
if(lastnote[i]<;50){:缺少需要TRUE/FALSE的值时出错_R_For Loop - Fatal编程技术网

if(lastnote[i]<;50){:缺少需要TRUE/FALSE的值时出错

if(lastnote[i]<;50){:缺少需要TRUE/FALSE的值时出错,r,for-loop,R,For Loop,我正在努力学习R。所以我是初学者。我想写一个代码如下,我有问题。如果你帮助我,我将不胜感激 这只是我的练习。我一直在读一些关于R的书,我一直在尝试做一些事情 class1 <- data.frame(name=c("a1","a2","a3","a4","a5","a6","a7","a8","a9","a10"), surname= c("b1","b2", "b3", "b4", "b5","b6","b7","b8","b9","b10"),

我正在努力学习R。所以我是初学者。我想写一个代码如下,我有问题。如果你帮助我,我将不胜感激

这只是我的练习。我一直在读一些关于R的书,我一直在尝试做一些事情

class1 <- data.frame(name=c("a1","a2","a3","a4","a5","a6","a7","a8","a9","a10"), 
            surname= c("b1","b2", "b3", "b4", "b5","b6","b7","b8","b9","b10"),
            exam1= c(25,35,55,65,75,35,80,90,100,65),
            exam2 = c(56,65,25,95,78,69,45,23,45,63),
            final= c(65,55,78,93,65,89,89,95,100,75))
lastnote <- (((class1$exam1+class1$exam2)/2)*0.4 + (class1$final*0.6))
lastnote
class1[,"lastnote"] <- lastnote

for (i in lastnote)
if(lastnote[i] < 50) {x= "FF"
} else if(lastnote[i] < 60) {x= "CD"
} else if(lastnote[i] < 65) {x= "CC"
} else if(lastnote[i] < 70) {x= "BC" 
} else if(lastnote[i] < 80) {x= "BB"
} else if(lastnote[i] < 90) {x= "AB"
} else {x= "AA"}

class1您可以在
base
R中使用
cut

class1$letters <- cut(class1$lastnote, breaks = c(0, 50, 60, 65, 70, 80, 90, 100), labels = c("FF", "CD", "CC", "BC", "BB", "AB", "AA"))
class1

您可以在
base
R中使用
cut

class1$letters <- cut(class1$lastnote, breaks = c(0, 50, 60, 65, 70, 80, 90, 100), labels = c("FF", "CD", "CC", "BC", "BB", "AB", "AA"))
class1

我会利用
dplyr
包来完成这项工作,并在
功能时使用
case\u

class1 %>% 
    mutate(lastnote =((exam1+exam2)/2)*0.4 + (final*0.6),
           Final_Value = case_when(lastnote < 100 ~ 'AA',
                                   lastnote < 90 ~ 'AB',
                                   lastnote < 80 ~ 'BB',
                                   lastnote < 70 ~ 'BC',
                                   lastnote < 65 ~ 'CC',
                                   lastnote < 60 ~ 'CD',
                                   lastnote < 50 ~ 'FF'))
class1%>%
突变(lastnote=((exam1+exam2)/2)*0.4+(最终*0.6),
最终_值=情况_(最后一个注释<100~‘AA’,
lastnote<90~‘AB’,
lastnote<80~'BB',
最后一个音符<70~'BC',
最后一个音符<65~‘CC’,
lastnote<60~‘CD’,
最后一个注释<50~‘FF’)

我将利用
dplyr
包来完成这项工作,并在
功能时使用
case\u

class1 %>% 
    mutate(lastnote =((exam1+exam2)/2)*0.4 + (final*0.6),
           Final_Value = case_when(lastnote < 100 ~ 'AA',
                                   lastnote < 90 ~ 'AB',
                                   lastnote < 80 ~ 'BB',
                                   lastnote < 70 ~ 'BC',
                                   lastnote < 65 ~ 'CC',
                                   lastnote < 60 ~ 'CD',
                                   lastnote < 50 ~ 'FF'))
class1%>%
突变(lastnote=((exam1+exam2)/2)*0.4+(最终*0.6),
最终_值=情况_(最后一个注释<100~‘AA’,
lastnote<90~‘AB’,
lastnote<80~'BB',
最后一个音符<70~'BC',
最后一个音符<65~‘CC’,
lastnote<60~‘CD’,
最后一个注释<50~‘FF’)

您可以使用相同的循环条件,只需少量更改

xx<-c()
for (i in unique(lastnote)){
  if(i < 50) {x= "FF"
  } else if(i < 60) {x= "CD"
  } else if(i < 65) {x= "CC"
  } else if(i < 70) {x= "BC" 
  } else if(i < 80) {x= "BB"
  } else if(i < 90) {x= "AB"
  } else {x= "AA"}
  xx<- append(xx,x)
}

print (xx)
[1] "CD" "CD" "CC" "AB" "BC" "BB" "BB" "BB" "AB" "BB"

xx您可以使用相同的循环条件,只需很少的更改

xx<-c()
for (i in unique(lastnote)){
  if(i < 50) {x= "FF"
  } else if(i < 60) {x= "CD"
  } else if(i < 65) {x= "CC"
  } else if(i < 70) {x= "BC" 
  } else if(i < 80) {x= "BB"
  } else if(i < 90) {x= "AB"
  } else {x= "AA"}
  xx<- append(xx,x)
}

print (xx)
[1] "CD" "CD" "CC" "AB" "BC" "BB" "BB" "BB" "AB" "BB"


xx您是在尝试访问列表中的
lastnote
变量,还是在尝试添加具有这些值的列?您迭代lastnote的元素。然后您就不能使用
lastnote[i]
但只需使用
i
。否则,通过使用
for(i in 1:length(lastnote))
对从1到
lastnote
的长度进行迭代,以使代码正常工作。嗨,Jenks,我正在尝试在valuesHi julian中添加一列,是的。谢谢。但当我查看x时,只需“FF”是written@pomatomus在同一位置的每次迭代中影响一个值,需要在向量的正确位置影响结果是否尝试访问列表中的
lastnote
变量,还是尝试添加具有这些值的列?在lastnote的元素上迭代。然后不能使用
last请注意[i]
,但只需使用
i
。否则,请使用
for(i in 1:length(lastnote))
对从1到
lastnote
的长度的数字进行迭代,以使您的代码正常工作。嗨,Jenks,我正在尝试在值中添加一列Shi julian,是的。谢谢。但当我查看x时,只需“FF”是written@pomatomus您在同一位置的每次迭代中影响一个值,您需要在向量的正确位置影响结果。很高兴它有帮助!很高兴它有帮助!@pomatomus非常感谢如果您找到问题的答案,您可以投票谢谢。是的,我有。我如何投票?我不知道。正如您所看到的,我是这个网站的新手。@pomatomus只需点击0上方的向上箭头,我们就得到了选票和10分。如果你在下面打勾,我们得到25分points@pomatomus你可以投票赞成/反对你想要的任何答案,并根据自己的意愿接受最好的答案you@pomatomus非常感谢,如果你能找到问题的答案,你可以投票。谢谢。是的,我投票了。我怎么投票?我不知道。就像你一样看,我是这个网站的新手。@pomatomus只需点击0上方的向上箭头,我们就得到了选票和10分。如果你在下面打勾,我们就得到了25分points@pomatomus你可以投票赞成/反对你想要的任何答案,并根据自己的意愿接受最好的答案