【发布时间】:2014-11-20 23:45:33
【问题描述】:
我正在尝试创建一个函数,该函数将接收向量 k 并返回给我一个长度为 length(distMat[1,]) 的矩阵,长度为 (k)。 distMat 是一个巨大的矩阵,而 indSpam 是一个长向量。特别是对于我的情况,长度(distMat [1,])是2412。当我输入k作为长度为1的向量时,我得到一个长度为2412的向量。我希望能够输入k作为向量长度为 2,得到一个 2412x2 的矩阵。我正在尝试使用while循环让它通过k的长度,但它只返回给我一个长度为2412的向量。我做错了什么?
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中呢?
-
矩阵的条目是什么?你的问题都是关于尺寸的。您是否关心您返回的矩阵是否是正确的形状但填充了 0?
indSpam的相关性是什么?while循环肯定是没有必要的。