2015-11-22 47 views
0

我試圖改變最後的correcttot函數從一個for循環來應用,但一直在遇到問題,試圖讓應用函數採取df,我將要應用它的數組中的基礎值。使用apply來查找7個常量的最優值?

correcttot<-function(v,p,r){ 
     df<-expand.grid(i=1:10,j=1:10,k=1:10,l=1:10,m=2:10,n=2:10,o=1:10)) 
     df$correct3<-0 
     df$correct3<- apply(df, 1:7, function(x) 
      percentcorrect((x$i)/10,(x$j)/10,(x$k)*20,(x$l)*20,x$m,x$n,x$o,v,p,r) 
     ) 
     df$correct3 
     } 
     newvec2<-correcttot(v,p,r) 

回答

2

apply的第二個參數不是列號,它是維數。您的數據框只有兩個維度:行(1)和列(2)。

爲了進行分析,請將第二個參數設置爲1,表示您將函數應用於每一行。

+0

謝謝!這是真的,即使它是dim7? – user3678028

+0

根據定義,數據幀有兩個維度。您可以將尺寸視爲識別值所需的座標數。對於矢量,您只需要一個值(例如第三個值)。對於數據框,您需要行和列(例如第3列,第7行)。對於三維數組,您需要所有三維的座標(例如,第3行,第2列,第4深度)。對於更高的尺寸,你需要更多的座標。我很確定你的df對象只有兩個維度 - 行和列。 –