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@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.


______________________________________________
R-help@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.

Reply via email to