我正在尝试创建一个函数,它将采用向量k并返回一个长度为(distMat [1,])的矩阵K)。 distMat是一个巨大的矩阵,indSpam是一个长向量。特别是对于我的情况,length(distMat [1,])是2412.当我输入k作为长度为1的矢量时,我得到一个长度为2412的矢量。我希望能够输入k作为矢量长度为2,得到2412x2的矩阵。我试图使用while循环让它穿过k的长度,但它只返回给我一个长度为2412的矢量。我在做什么错了?创建一个函数,它接受一个向量并返回一个矩阵R
predNeighbor = function(k, distMat, indSpam){
counter = 1
while (counter<(length(k)+1))
{
preMatrix = apply(distMat, 1, order)
orderedMatrix = t(preMatrix)
truncate = orderedMatrix[,1:k[counter]]
checking = indSpam[truncate]
checking2 = matrix(checking, ncol = k[counter])
number = apply(checking2, 1, sum)
return(number[1:length(distMat[1,])] > (k[counter]/2))
counter = counter + 1
}
}
我想我可以使用cbind将一些向量绑定在一起,但是我怎样才能创建一个向量,保存它,然后把它放入cbind中? – swordyfish 2014-11-21 00:06:56
矩阵的条目是什么?你的问题是关于维度的。你是否在意你回来的矩阵是正确的形状,但充满了0? “indSpam”的相关性是什么? while循环肯定没有必要。 – Gregor 2014-11-21 00:52:42