我正在嘗試創建一個函數,它將採用向量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