我還是R的新手,並且已經閱讀過以前的類似帖子......我認爲這與r通過承諾而不是價值的事實有關,但是我不是很清楚哪裏錯了這裏..r將值傳遞給內部函數not found
下面的代碼的簡單版本,我也想嘗試:
定義:
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(數據,指標= 「A」)
它會給我的結果:
> f(data,metric="A")
Error in eval(expr, envir, enclos) : object 'RULE' not found
我不知道爲什麼它不能找到「規則」....? 謝謝你的幫助!
謝謝@mnel!我一直是plyr軟件包的忠實粉絲,但它可能是我做出改變的時候...... :) – linp 2013-04-04 13:56:52