R:用于循环/计数条件行/数据帧

时间:2017-10-05 17:21:11

标签: r for-loop dataframe

我是R.的新手。现在我被要求使用for循环来计算数量 在钻石的前n个观察中,具有颜色E和透明度SI2的钻石 数据集。

我写这样的代码:

library(ggplot2)

countESI2<-function(n){
  k<-NULL
  diamonds1<-diamonds[1:n,]
  for (i in 1:n)   {
    if(diamonds1$color=="E" & diamonds1$clarity=="SI2") {
      k<-k+1}
  }
  return(k)
}
countESI2(50)

但它不起作用,有人可以帮我检查一下吗?很多赞赏。

2 个答案:

答案 0 :(得分:0)

这里有一些问题。首先,k应该从0开始,而不是NULL。您可能预期NULL + 1等于numeric(0),而不是1。其次,您需要索引您感兴趣的diamonds行。第三,看起来您正在检查澄清ST2,而不是问题和函数名称中所述的SI2。

countESI2<-function(n){
  k<-0 # Not NULL
  for (i in 1:n)   {
    if(diamonds$color[i]=="E" & diamonds$clarity[i]=="SI2") { # Index by i; change from "ST2"
      k<-k+1}
  }
  return(k)
}
countESI2(50)

答案 1 :(得分:0)

您的代码存在一些问题:

  1. 循环中的if语句不使用i变量,因此每次都在逻辑上比较整个“颜色”和“清晰度”列。
  2. k不应初始化为NULL(无效)。而是将其设置为0.
  3. 该任务要求计算“SI2”的出现次数,但您的代码引用“ST2”。
  4. 由于这是一项家庭作业,我会留给您自己更正代码。