On 2010-05-26 1:17, arnaud Gaboury wrote:
Dear group,

Here is my function:


#return the daily PL for day y

PLDaily<-function(x,y)


{

#find elements in my directory with "LSCPos" in the name, keep the numeric
part in the name and
#create a list
   l<-gsub("\\D","",dir()[grep("LSCPos",dir())])

#select in the list the desired elements
   assign("sel",l[which(l==x):which(l==y)],envir=.GlobalEnv)
   #here is another solution  select<-l[l %in% seq(x, y)]

#first we need to create the Pos and Trad elements

   for (i in sel)  {

   assign(paste("Pos",i,sep=""),position(i),envir=.GlobalEnv)
   assign(paste("Trad",i,sep=""),trade(i),envir=.GlobalEnv)

                    }
#access elements in my environment
   posA<-get(paste(c("Pos",x),collapse=""))
   posB<-get(paste(c("Pos",y),collapse=""))
   av<-get(paste(c("Trad",y),collapse=""))

#apply some change on element columns then create only one data frame with
the three elements
   allcon<-ddply(rbind(av[,1:3],
transform(posA,prix=POSITION*SETTLEMENT,SETTLEMENT=NULL),
           transform(posB, prix = -POSITION * SETTLEMENT, SETTLEMENT = NULL,
POSITION = POSITION * -1)),
           "DESCRIPTION",summarise,pl=sum(prix),quantity=sum(POSITION))

#remove the date in $DESCRPTION and add a new column $SHORTDESCRIPTION
   allcon$SHORTDESCRIPTION<-sub('
[a-z]{3}/[0-9]{2}','',allcon$DESCRIPTION,ignore.case=TRUE)

#read the contractvalue file
   value<-read.csv2("contractvalue.csv",sep=",",h=T,strip.white=T)

#merge "value" with "allcon", change some columns, then merge with PosB,
replace NA by zero and assign the final result to element PL
   zz<-merge(transform(merge(value,allcon,all.y=T),SHORTDESCRIPTION=NULL,
       VALUE=NULL,PL=-VALUE*pl,quantity=NULL),PosB,all.x=T,sort=F)
   zz[is.na(zz)]<-0
   #PL<-zz[c(1,3,4)]
   assign(paste("DailyPL",y,sep=""),zz[,c(1,3,4)],envir=.GlobalEnv)

}

Here is what I get :

PLDaily(100524,100525)
Error in as.data.frame(y) : object 'PosB' not found

ls()
[1] "PLDaily"    "Pos100524"  "Pos100525"  "position"   "sel"
"Trad100524" "Trad100525" "trade"

Why R can't find "PosB" ?

Quite possibly because R is case-sensitive.
You have defined 'posB' and you're looking for 'PosB'.

  -Peter Ehlers

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to