2013-10-12 48 views
2

我查看了幾篇文章,以獲得幫助解決我的問題,但沒有運氣實施解決方案。我的問題很簡單,我想從Reshape包中將一個變量名傳遞給cast函數。變量「Time」是我創建的用戶定義函數中的一個參數。我想通過這個轉換函數傳遞這個參數。傳遞data.frame變量名稱以融合並投射r

僞數據我總是用:

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) 

這裏是我的部分用戶定義的函數我測試:

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) 
    } 

我得到的錯誤。我試過貼的各種配置我懷疑這是一個簡單的問題,我想不通:

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

回答

2

我想通了。這是對paste0如何與as.formula函數配合使用的誤解。 下面是如何投功能應該已被寫入:

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

此外,您應該使用'reshape2'包('reshape'是過時)。 (將'cast'改爲'dcast') – agstudy