Hello ,

I’m new to Julia, and have been using R previously. Could I ask if there’s an equivalent package in Julia to the package, `prob`

in R.

https://cran.r-project.org/web/packages/prob/vignettes/prob.pdf

I used `prob`

to learn basic probability and have a lot of code that uses it. Or, alternatively should I use `RCall`

, or try to port the package over to R - that would be hard because I’m new to Julia.

Thanks a lot, Aj

I would actually think this would be a great way to learn the language. It shouldn’t be too difficult, and it gives you concrete problems with known solutions to try and tackle. I wouldn’t try “porting” either: I’d just remake the same functionality without looking at their internals.

1 Like

I think many of the necessary pieces for such a package exist in `Distributions.jl`

but is probably organized differently than the `prob`

package.

1 Like

Great, thanks for the quick reply! I’ll try to implement the functions I need.

The `prob`

package at it’s most basic level only uses `data.frames`

i.e. probability tables, and `set operations`

, it’s got no parametric distributions. It’s very, very simple really

Looks like a fun little project. Some tips to get your started as you are new: check out `PkgDev.jl`

to make a nice package layout. And then you will want `Combinatorics.jl`

and `StatsBase.jl`

to get combinations/permuations as well as sampling with and without replacement. You might also want to check out `Cards.jl`

once 0.6 is out to get a nice datastructure for the cards examples! Good luck!

1 Like

Okay this got me thinking … for the `toss_coin`

function is there a more straightforward way of doing this than

```
using Iterators
toss_coin(n::Int) = collect(product(fill((:H, :T), n)...))
```

The program is meant to give all the possible outcomes from toss a coin `n`

times. I think R uses the `expand.grid`

function. For some reason the above feels clunky to me.

1 Like

Its a great case for chaining:

```
using ChainRecursive
@chain begin
toss_coin(n::Int) = begin
(:H, :T)
fill(it, n)
product(it...)
collect(it)
end
end
```

1 Like

Thanks a lot for the kind encouragement , and the pointers to useful packages already in Julia.

The two functions in the `R`

package that I always need are, `probspace`

to setup the probability space, and `subset`

to partition/slice up the probability table.

Once I’ve done those two - it should be OK to do most of the examples in the vignette

1 Like

Kind of a cool package, like the Mathematica like argument syntax … though I am still not sure I love this way of making the outcome, even if it has a cleaner layout with your version.

Here’s also a fun package in Haskell,

and here’s a children’s guide to learning Haskell,

http://learnyouahaskell.com/starting-out

which is a lot of fun to learn both probability and programming from