Я пытаюсь решить проблему с одной строкой кода, которая, я подозреваю, связана с задействованными циклами for.В результате произошла ошибка:
Ошибка в матрице (unlist (значение, рекурсивное = FALSE, use.names = FALSE), nrow = nr,: «данные» должны быть векторного типа, были «NULL '
Я перевожу из MATLAB, с которым я не знаком:
SharedSpecies=find(A(:,i)>0 & A(:,j)>0)
Мои данные: количество образцов в столбцах, гены в строках, но введены как немаркированныеdata.frame. Содержит множество нулей и небольших чисел, например:
A <- matrix(c(0.000113255,4.23E-05,0.000336436,0.00E+00, 0.000034303, 3.00E-04, 0.000280363, 9.82E-05, 0.00068042, 3.52E-04, 0.0000561, 0.00E+00, 0, 0.00E+00, 0, 0.00E+00), 4,4)
NumSamples <- dim(A)[2]
Затем длинная функция с проблемным разделом, содержащим два цикла for:
fancy_function <- function(A)
{
for (i in 1:NumSamples-1)
{
for (j in i+1:NumSamples)
{
# Prior bits of function here but not problematic in debugging
SharedSpecies <- rownames(subset(A, A[,i]>0 & A[,j]>0))
SharedSpecies <- as.numeric(SharedSpecies)
Overlap[i,j] <- 0.5*(sum(A[SharedSpecies,i]) +
sum(A[SharedSpecies,j]))
}
}
}
Мне кажется,не могу заставить эту функцию fancy_function (A) работать, я думаю, это проблема с разделом A [, i]> 0 & A [, j]> 0, так как я много раз менял формулу вокруг этого выражения, и это всегдаСтрока с проблемой. Я также попытался с помощью которого, как в:
c(which(A[,i]>0 & A[,j]>0))
или с помощью «с» с каким-то неуклюжим фреймом данных, чтобы добавить имена строк во фрейме данных и подмножество этих значений:
list_of_true_falses <- as.data.frame(with(A, A[,i]>0 & A[,j]>0))
Обратите внимание, что это не то же самое, что первоначальное удаление всех нулевых значений длям фрейма данных (как я также пытался), поскольку это проходит через каждую возможную пару столбцов, чтобы удалить нули в этой паре.Я также пытался преобразовать данные в другие классы, но безрезультатно.
Вывод в MATLAB, к которому я стремлюсь, - это вектор, который начинается с 1,2,3,11. Я могу добиться этого, введя значения iи j, и, проверяя этот раздел кода независимо, кажется, что он просто разваливается в форме функции, поэтому я подозреваю, что цикл for является проблемой.
Большое спасибо