R 在数据帧中应用函数时,dim(X)必须具有正长度
我正在尝试将此函数应用于数据帧列:R 在数据帧中应用函数时,dim(X)必须具有正长度,r,R,我正在尝试将此函数应用于数据帧列: 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) } 但我得到了一个错误: dim(X) must have a positive length 我已经尝试将其作
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)
}
但我得到了一个错误:
dim(X) must have a positive length
我已经尝试将其作为矩阵应用,如下所示:
apply(as.matrix(last_visit)[,2],1,recomenda_n_melhor)
但我也犯了同样的错误。
以下是所使用的数据帧:
结果2-相似矩阵-这只是一个样本
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
最后一次访问
customer cat
1 1 X5.1
2 2 X6.1
3 3 X1.1
4 4 X2.1
这是因为R强制
最后一次访问[2]
为无量纲向量,而apply
期望对象具有一些量纲。您可以通过在命令中添加drop=F
来防止强制,即:
apply(last_visit[,2,drop=F], 1, best_recom)
另一种方法是在向量上使用lappy
或sapply
:
lapply(last_visit[,2], best_recom)
您是否检查了
dim(如.matrix(上次访问)[2])
?如果它只是一列,则不需要lappy
。只要做best\u recom(last\u visit[,2])
就行了吗?@最近的邮件,我认为best\u recom
没有正确的矢量化。正如前面提到的@MaratTalipov一样,R会将返回的数据帧(默认情况下)转换为在某些情况下不需要的矢量;有关详细说明,请参见此处的帖子:
lapply(last_visit[,2], best_recom)