У меня есть код для превращения верхнего треугольника матрицы в вектор и сохранения значений из этого вектора вместе с их исходными координатами из матрицы во фрейм данных. Как пропустить цикл for, если элемент в векторе равен нулю?
Я пробовал else заявления и другие попытки.
v <- matrix(sample(0:1, 10, replace = TRUE),9,9)
t <- v[upper.tri(v,diag=T)]
tful <- t[t!=0]
df <- data.frame(FP1=rep(0,length(t)),FP2=rep(0,length(t)),tanimoto=rep(0,length(t)))
for (i in 1:length(t)){
if (t[i]==0) next
else {
col_num <- floor(sqrt(2*i-7/4)+.5)
row_num <- i-(.5*col_num^2-.5*col_num+1)+1
df$FP1[i] <- row_num
df$FP2[i] <- col_num
df$tanimoto[i] <- v[row_num,col_num]
}
}
Я не хочу, чтобы в моем фрейме данных были нули, и цикл пропускал эти значения. Я понимаю, что фрейм данных должен быть меньше в строках, но я использую это в качестве примера.