我是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)
但它不起作用,有人可以帮我检查一下吗?很多赞赏。
答案 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)
您的代码存在一些问题:
if
语句不使用i
变量,因此每次都在逻辑上比较整个“颜色”和“清晰度”列。k
不应初始化为NULL
(无效)。而是将其设置为0.