[英]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)
您的代碼有一些問題:
if
語句不使用i
變量,因此在邏輯上每次都比較整個“ color”和“ clarity”列。 k
不應初始化為NULL
(不執行任何操作)。 而是將其設置為0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.