2013-10-12 3 views
2

J'ai regardé plusieurs messages afin d'obtenir de l'aide pour résoudre mon problème, mais pas de chance de mettre en œuvre une solution. Mon problème est simplement, je veux passer un nom de variable à la fonction de distribution à partir du paquet Reshape. La variable "Time" est un argument dans une fonction de définition d'utilisateur que je crée. Je veux passer cet argument à travers la fonction cast.Passage des noms de variables de data.frame pour fusionner et r cast

Pseudo J'utilise toujours des données:

dates <-seq(as.Date("2010-01-01"), by = "day", length.out= 1080) 
myData <- expand.grid(Day, Hour) 
names(myData) <- c("Date","Hour") 

myData$Adspend <- apply(myData, 1, function(x) foo(x[2], x[1])) 
myData$Date <-dates 

myData$Demand <-(rnorm(1,mean = 0, sd=1)+.75*myData$Adspend) 

myData$Hour<-as.factor(myData$Hour) 

Voici mon utilisateur partielle de fonction définie je teste:

AddLag <- function(DF,Date,Time,RESP,AD,LAG=9) { 
    Lags<-24-LAG 
    ADDATE<-DF[,c(1,2,4)] 
    RESPDATE<-cbind(DF[[Date]],DF[[Time]],DF[[RESP]]) 
    HOURAD<-melt(ADDATE, id=c(Date,Time), measured =c(AD)) 
    HOURAD<- cast(HOURAD,as.formula(paste0(" ...~"),Time)) 

    return(HOURAD) 
    } 

Les erreurs que je reçois. J'ai essayé différentes configurations de pâte, je soupçonne que c'est un simple problème que je ne peux pas comprendre:

Bo<-AddLag(myData,"Date","Hour","Demand","Adspend") 
Error in parse(text = x) : <text>:2:0: unexpected end of input 
1: ...~ 
^

Répondre

2

I figured it out. C'était un malentendu sur la façon dont paste0 fonctionne avec la fonction as.formula. Voici comment la fonction CAST aurait dû être écrit:

require(reshape2) 
HOURAD<- dcast(HOURAD,as.formula(paste0("... ~",Time))) ## was a parenthesis error here 
+4

En outre, vous devez utiliser 'package reshape2' (' reshape' est obsolète). (change 'cast' en' dcast') – agstudy

Questions connexes