簡體   English   中英

R:用於循環/計數條件行/數據幀

[英]R : For loop / count conditional rows/ data frame

我是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)

但這沒有用,有人可以幫我檢查一下嗎? 非常感謝。

這里有幾個問題。 首先, 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. 循環中的if語句不使用i變量,因此在邏輯上每次都比較整個“ color”和“ clarity”列。
  2. k不應初始化為NULL (不執行任何操作)。 而是將其設置為0。
  3. 該任務要求計數“ SI2”的出現,但是您的代碼引用了“ ST2”。
  4. 由於這是一項家庭作業,因此我留給您自己糾正代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM