벡터 k를 받아 길이 (distMat [1,]) 길이의 행렬을 나에게 반환하는 함수를 만들려고합니다. 케이). distMat는 거대한 행렬이고 indSpam은 긴 벡터입니다. 특히 내 상황에 따라 길이 (distMat [1,])는 2412입니다. 길이 1의 벡터로 k를 입력하면 길이가 2412 인 벡터가 생깁니다. k의 벡터로 입력 할 수 있기를 원합니다. 길이가 2이고 2412x2의 행렬을 얻습니다. 나는 k의 길이를 지나는 while 루프를 사용하려하지만 길이 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에 넣을 수 있습니까? – swordyfish
매트릭스의 항목은 무엇입니까? 귀하의 질문은 모두 차원에 관한 것입니다. 당신이 돌아 오는 행렬이 올바른 모양이지만 0으로 채워지는지 신경 쓰시겠습니까? 'indSpam'의 관련성은 무엇입니까? 'while' 루프는 반드시 필요한 것은 아닙니다. – Gregor