2016-01-27 98 views
0

我嘗試使用我自己的函數使用apply函數。不過,我不斷收到此錯誤:在match.fun錯誤(FUN): 'calculate_3month_average_volume(volume_matrix,90)' 不低於在用戶定義函數R中應用()

代碼的功能,字符或符號:

#Calculate 3 monthtly average volume (does not work, coding issue) 

calculate_3month_average_volume <- function(stock, number_of_days){ 

return(SMA(stock, number_of_days)) 
} 



avg_volume_matrix <- apply(X = volume_matrix, MARGIN = 2, FUN = calculate_3month_average_volume(volume_matrix,90)) 
+0

嘗試:'申請(X = volume_matrix,MARGIN = 2,FUN = calculate_3month_average_volume,volume_matrix,90)' – Gopala

+0

@ user3949008這給了我錯誤:在FUN(newX [,i],...)中出錯:未使用的參數(90) –

+2

Oooops ...卷矩陣已經是一個參數。所以,你應該只是通過number_of_days = 90。看看這個:http://stackoverflow.com/questions/14427253/passing-several-arguments-to-fun-of-lapply-and-others-apply – Gopala

回答

1
avg_volume_matrix <- apply(volume_matrix,2,function(x){ 
    SMA(x,90) #can also be return(SMA(x,90)) 
    }) 

也應該這樣做,因爲您不必將函數調用到您的環境中就可以開始。

您所遇到的問題是,在您的應用循環中,當您聲明「FUN = calculate_3month_average_volume(volume_matrix,90)」時,您應該在被調用函數中針對x匹配您的參數,如apply(x=,MARGIN=,FUN=,...)。如果我們使用的是被稱爲入有您的環境功能,我們將使用:

avg_volume_matrix <- apply(volume_matrix,2,calculate_3month_average_volume(x,90))