我还是 R.. 的新手..并且已经阅读过以前的类似帖子...我认为这与 r 传递承诺但不传递值的事实有关,但我不太清楚这里哪里出错了..
这是我想尝试的代码的简单版本:
定义:
data<-data.frame(TYPE=as.integer(runif(20,1,3)),COL1=runif(20,1,100),COL2=runif(20,1,10))
RULEA=10
RULEB=20
我运行如下:
f<-function(data,metric="A"){
data<-ddply(data,.(TYPE),transform,SUMCOL1=sum(COL1,na.rm=TRUE),SUMCOL2=sum(COL2,na.rm=TRUE))
data1<-f1(data=data,metric=metric)
return(data1)
}
f1<-function(data=data,metric="A"){
if(metric=="A"){
RULE<-RULEA
data$FACTOR<-data$COL1
}else if(metric=="B"){
RULE<-RULEB
data$FACTOR<-data$COL1
}
if(nrow(data!=0)){
x<-subset(data,FACTOR>1)
if(nrow(x)!=0){
x<-ddply(x,.(TYPE),mutate,sig=(max(FACTOR)>2*min(FACTOR)) & min(FACTOR) < RULE)
}
}
return(x)
}
如果我运行如下: f(data,metric="A")
它会给我结果:
> f(data,metric="A")
Error in eval(expr, envir, enclos) : object 'RULE' not found
我不知道为什么它找不到“规则”......?感谢您的帮助!