私はまだ 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
なぜ「RULE」が見つからなかったのかわかりません....?ご協力ありがとうございました!