Что не так с этой функцией Джулии? - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь создать разреженную матрицу в Юлии, но в настоящее время я сталкиваюсь с этой проблемой:

ERROR: MethodError: no method matching createA(::DataFrame)

Что я делаю не так? Как мне это исправить? Это код:

import SparseMatrixDicts
import DataFrames  
import CSV
function createA()

t1 = argmin(argmax(keg[Array(keg[:dad]  .> 0) .& Array(argmax(keg[:mum] .> 0))]))
t2 = argmax(keg[:ID])
A = SparseMatrixDicts(t2, t2)
diagm(A) = 2-0.5^(keg[:GEN] -1)

  for t in t1:t2
  A[t,t]= sum(c(A[t,t], 0.5^(keg[t,"GEN"])*A[keg[t,"dad"],keg[t,"mum"]]))

    vec = 1:(t-1)


    A[t, vec]= 0.5 * sum(c(A[vec,keg[t,"dad"]],A[vec,keg[t,"mum"]]))
    A[vec,t]= A[t,vec]


  return (A)
  end
end 

keg = DataFrame(ID = [1,2,3,4,6,5,7],
                dad = [0,0,1,1,1,3,5],
                mum = [0,0,0,2,4,4,6],
                GEN = [1,1,2,2,3,3,4]
                )

wish = createA(keg)

1 Ответ

3 голосов
/ 15 октября 2019

Вы определили функцию createA, не принимая аргументов, а затем вызвали ее с одним аргументом, что, конечно, не работает. Попробуйте вместо этого объявить функцию как function createA(keg).

...