dim(X) moet een positieve lengte hebben bij het toepassen van functie in dataframe

Ik probeer deze functie toe te passen op een dataframekolom:

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

Zoals dit:

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

Maar ik krijg deze foutmelding:

dim(X) must have a positive length

Ik heb al geprobeerd het als een matrix als volgt toe te passen:

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

Maar ik krijg dezelfde foutmelding.
Dit zijn de dataframes die worden gebruikt:

resultaat2 – een overeenkomstmatrix – dit is slechts een voorbeeld

         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

laatste_bezoek

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

Antwoord 1, autoriteit 100%

Het gebeurt omdat R last_visit[,2]dwingt tot een dimensieloze vector, terwijl applyverwacht dat het object enige afmetingen heeft. U kunt de dwang voorkomen door drop=Ftoe te voegen aan uw opdracht, d.w.z.:

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

Een andere manier zou zijn om gewoon lapplyof sapplyop de vector te gebruiken:

lapply(last_visit[,2], best_recom)

Other episodes