2015-02-10 17 views
3

我想這一功能應用到數據幀列:暗淡(X)的數據幀應用功能時,必須有一個積極的長度

best_recom <- function(x,n=1) { 
    y <- result2[x,order(-result2[x,])[n]] 
    inds = which(result2[x,] == y, arr.ind=TRUE) 
    recom <- names(inds[1]) 
    return(recom) 
} 

像這樣:

apply(last_visit[,2], 1, best_recom) 

但我得到這個錯誤:

dim(X) must have a positive length 

我已經嘗試過把它當成一個像這樣的矩陣:

apply(as.matrix(last_visit)[,2],1,recomenda_n_melhor) 

但我得到同樣的錯誤。 這些是所使用的數據幀:

RESULT2 - 相似性矩陣 - 這只是一個樣品

  X1.0  X1.1  X2.1  X3.1 
X1.0  0.0000000 0.5000000 0.3872983 0.3162278 
X1.1  0.5000000 0.0000000 0.2581989 0.0000000 
X2.1  0.3872983 0.2581989 0.0000000 0.0000000 
X3.1  0.3162278 0.0000000 0.0000000 0.0000000 

LAST_VISIT

customer cat 
1  1 X5.1 
2  2 X6.1 
3  3 X1.1 
4  4 X2.1 
+1

你是否檢查'暗淡(as.matrix (LAST_VISIT)[1,2])'? – 2015-02-10 03:13:24

回答

9

這是因爲ř脅迫last_visit[,2]到一個無量綱的矢量,而apply期望該對象具有一些尺寸。

apply(last_visit[,2,drop=F], 1, best_recom) 

另一種方法是隻對矢量使用lapplysapply:您可以通過添加drop=F你的命令,即防止強迫

lapply(last_visit[,2], best_recom) 
+0

如果只有一列,則不需要'lapply'。只要做'best_recom(last_visit [,2])'肯定? – thelatemail 2015-02-10 04:26:07

+0

@thelatemail,我不認爲'best_recom'是正確的矢量化 – 2015-02-10 04:31:41

+0

正如@MaratTalipov所提到的,R將一個col/row返回的數據框轉換爲一個向量(默認情況下),這在某些情況下是不受歡迎的;請參閱此處的詳細說明:https://radfordneal.wordpress.com/2008/08/20/design-flaws-in-r-2-%E2%80%94-dropped-dimensions/#comments – 2016-12-10 18:28:42

相關問題