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 apply
verwacht dat het object enige afmetingen heeft. U kunt de dwang voorkomen door drop=F
toe te voegen aan uw opdracht, d.w.z.:
apply(last_visit[,2,drop=F], 1, best_recom)
Een andere manier zou zijn om gewoon lapply
of sapply
op de vector te gebruiken:
lapply(last_visit[,2], best_recom)