Я пытаюсь создать функцию, которая будет принимать вектор k и вернуть мне матрицу с размерами length (distMat [1,]) по длине (к). distMat - огромная матрица, а indSpam - длинный вектор. В частности, в моей ситуации длина (distMat [1,]) равна 2412. Когда я вхожу в k как вектор длины один, я получаю вектор длиной 2412. Я хочу иметь возможность вводить k в качестве вектора длины два и получить матрицу 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
Каковы записи матрицы? Ваш вопрос касается размеров. Вам небезразлична ли матрица, которую вы получаете, правильная форма, но заполненная 0? Какова актуальность 'indSpam'? Цикл 'while', безусловно, не нужен. – Gregor