[R] Creating a simple function
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Fri Sep 20 21:05:27 CEST 2019
Hello,
Something like this?
ctab <- function(data) {
gmodels::CrossTable(as.matrix(data), prop.chisq = FALSE, prop.c =
FALSE, prop.t = FALSE, format = "SPSS")
}
mtcars %>% select(cyl, gear) %>% ctab()
Hope this helps,
Rui Barradas
Às 16:30 de 20/09/19, Zachary Lim escreveu:
> Hi,
>
> I'm trying to create a simple function that takes a dataframe as its only argument. I've been using gmodels::CrossTable, but it requires a lot of arguments, e.g.:
>
> #this runs fine
> CrossTable(data$col1, data$col2, prop.chisq = FALSE, prop.c = FALSE, prop.t = FALSE, format = "SPSS")
>
> Moreover, I wanted to make it compatible with piping, so I decided to create the following function:
>
> ctab <- function(data) {
> CrossTable(data[,1], data[,2], prop.chisq = FALSE, prop.c = FALSE, prop.t = FALSE, format = "SPSS")
> }
>
> When I try to use this function, however, I get the following error:
>
> #this results in 'Error: Must use a vector in `[`, not an object of class matrix.'
> data %>% select(col1, col2) %>% ctab()
>
> I tried searching online but couldn't find much about that error (except for in specific and unrelated cases). Moreover, when I created a very simple dataset, it turns out there's no problem:
>
> #this runs fine
> data.frame(C1 = c('x','y','x','y'), C2 = c('a','a','b','b')) %>% ctab()
>
>
> Is this a problem with my function or the data? If it's the data, why does directly calling CrossTable work?
>
> Thanks!
>
> Best,
> Zach
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list