## Issue

I tried to embed the `cramer`

function from `sjstats`

package. Although the function works perfectly outside the custom function, it doesn’t work within it.

Thank you very much in advance.

```
library (sjstats)
cramer2 <- function(dta, x, y){
effsize <- cramer(x ~ y, data = dta)
return(effsize)
}
cramer2(x=gender, y=age, dta=df)
```

Error in loglin(data, margins, start = start, fit = fitted, param = param, :

falsche Spezifikationen für ‘table’ oder ‘start’

## Solution

This happens because `x`

and `y`

are not automatically substituted in a formula for the variables you have passed. Look:

```
f <- function(x, y) {
return(x ~ y)
}
f(a, b)
#> x ~ y
```

If you want the variables substituted, you can do something like

```
f2 <- function(x, y) {
call("~", substitute(x), substitute(y))
}
f2(a, b)
#> a ~ b
```

So in your case you can do:

```
library (sjstats)
cramer2 <- function(dta, x, y) {
f <- as.formula(call("~", substitute(x), substitute(y)))
effsize <- cramer(f, data = dta)
return(effsize)
}
```

Obviously we don’t have your data, but using the built-in data set `efc`

we can demonstrate this works as expected:

```
data(efc)
cramer2(efc, e16sex, c161sex)
#> [1] 0.05258249
```

^{Created on 2022-02-27 by the reprex package (v2.0.1)}

Answered By – Allan Cameron

Answer Checked By – Willingham (BugsFixing Volunteer)