[R] Passing variable name

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Mon Dec 28 19:47:04 CET 2020


Hello,

In my previous post I had meant something like the following.
The two important parts are the use of `[[` in table() and the use of 
get() in the ggplot call.


MyData<-data.frame("Gender" = c("F", "F", "F", "F", "M", "M", "M", "M", 
"M",     "M", "F", "F"),
                    "Hand" = c("R",   "R", "L", "L", "R", "R", "L", "L", 
"R",     "R", "L", "L"),
                    "Gr" = c(1,  2,   1,   2,   1,   2,   1,   2,   1, 
2,     1,   2) )

MyData <- within(MyData, {
   Gender  <- factor(Gender)
   Hand <- factor(Hand)
   Gr   <- factor(Gr)
})

V1 <- "Gender"
V2 <- "Hand"

MyT2 <- table(MyData[[V1]], MyData[[V2]])
MyT2

MyChi <- chisq.test(MyT2)
MyChi

name2 <- c(V1, V2, "Frequency")
dMyT <- as.data.frame(MyT2)
names(dMyT) <- name2

library(ggplot2)

ggplot(data = na.omit(dMyT), aes(get(V1), Frequency, fill = get(V2))) +
   geom_bar(position = "dodge", stat = "identity") +
   labs(x = V1, fill = V2)


Is this what you want?

Hope this helps,

Rui Barradas

Às 18:31 de 28/12/20, Seyit Ali KAYIS escreveu:
> Hi Bert,
> 
>   
> 
> Thanks a lot for informing me regarding the html format of my email.
> 
>   
> 
> I also would like to thank to Erdogan CEVHER and Jim LEMON for their kind reply/suggestions. Yes I am aware of names function in R which is not the one I am looking for in here. Let me try to explain in another way.
> 
>   
> 
> The below part includes data generation, making cross-tab, Chi-Squared test and bar plot through ggplot.
> 
>   
> 
> #######################################################################
> 
> MyData<-data.frame("Gender" = c("F", "F", "F", "F", "M", "M", "M", "M", "M",     "M", "F", "F"),
> 
>                     "Hand" = c("R",   "R", "L", "L", "R", "R", "L", "L", "R",     "R", "L", "L"),
> 
>                     "Gr" = c(1,  2,   1,   2,   1,   2,   1,   2,   1,   2,     1,   2) )
> 
> 
> 
> MyData <- within(MyData, {
> 
>    Gender  <- factor(Gender)
> 
>    Hand <- factor(Hand)
> 
>    Gr   <- factor(Gr)
> 
> }
> 
> )
> 
> 
> 
> str(MyData)
> 
> 
> 
> library(ggplot2)
> 
>    
> 
> #################     Part 1   #########################################
> 
> 
> 
> MyT <- table(MyData$Gender, MyData$Hand)
> 
> print(MyT)
> 
> 
> 
> MyChi<- chisq.test(MyT)
> 
> print(MyChi)
> 
> 
> 
> dMyT <- data.frame(as.table(as.matrix(table(MyData$Gender, MyData$Hand, useNA = "ifany"))))
> 
> 
> 
> name2<- c("Gender", "Hand", "Frequency")
> 
> names(dMyT) <- name2
> 
> 
> 
> ggplot(data = na.omit(dMyT), aes(fill=Hand, y=Frequency, x=Gender)) +
> 
>          geom_bar(position="dodge", stat="identity")
> 
> 
> 
> ###############################################
> 
> 
> 
> Let’s say I have hundreds of variables (e.g SNP data). By using above codes I can perform what I need. However , I need to copy/paste variable name(s) for making table, Chi-Square test, and ggplot. This increase the chance of incorrectly copying/pasting variable name(s). What I can do is define variable name(s) earlier and pass that names to making table, Chi-Square test, and ggplot part. I believe there is a way to do it. I tried “paste” function (as below), but it did not work either.
> 
> 
> 
> Any comment/help is deeply appreciated.
> 
> 
> 
> Kind Regards
> 
> 
> 
> Seyit Ali
> 
> 
> 
> ##############################################
> 
> V1 <- "Gender"
> 
> V2 <- "Hand"
> 
> 
> 
> MyT2 <- table(paste('MyData$',V1), paste('MyData$',V2) )
> 
> print(MyT)
> 
> 
> 
> MyChi<- chisq.test(MyT)
> 
> print(MyChi)
> 
> 
> 
> dMyT <- data.frame(as.table(as.matrix(table(paste('MyData$',V1), paste('MyData$',V2), useNA = "ifany"))))
> 
> name2<- c(V1, V2, "Frequency")
> 
> names(dMyT) <- name2
> 
> 
> 
> ggplot(data = na.omit(dMyT), aes(fill=V2, y=Frequency, x=V1)) +
> 
>       geom_bar(position="dodge", stat="identity")
> 
> 
> 
> #################################################
> 
> 
> 
> 
> 
> 
> 
> 
> 
> From: Bert Gunter [mailto:bgunter.4567 using gmail.com]
> Sent: Monday, 28 December 2020 12:08 AM
> To: seyitali.kayis using ibu.edu.tr
> Cc: R-help <r-help using r-project.org>
> Subject: Re: [R] Passing variable name
> 
> 
> 
> This is a *plain text* list. As you can see from the included text that I received,  the HTML version that you sent was somewhat mangled by the server. I do not know whether or not enough got through for you to get a helpful reply, but if not, re-send *to the list, not me* in *plain text*.
> 
> 
> 
> 
> Bert Gunter
> 
> "The trouble with having an open mind is that people keep coming along and sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
> 
> 
> 
> 
> 
> On Sun, Dec 27, 2020 at 12:25 PM Seyit Ali KAYIS <seyitali.kayis using ibu.edu.tr <mailto:seyitali.kayis using ibu.edu.tr> > wrote:
> 
> Dear R users,
> 
>> 
> I have a data frame as below. In part 1, I have created a table for Gender and Hand, performed Chi-Square test and made graph using ggplot.
> 
>> 
> I want to replace the original variable names (Gender and Hand) with V1 and V2 and to be able to perform those things again as in #part 2. Is there a way to be able to replace the original names?
> 
>> 
> Any help is deeply appreciated
> 
>> 
> Kind Regards
> 
>> 
> Seyit Ali
> 
>> 
> #############################################################################
> 
>> 
> MyData<-data.frame("Gender" = c("F",     "F",        "F",        "F",        "M",      "M",              "M",      "M",      "M",      "M",      "F",        "F"),
> 
>                     "Hand" = c("R",           "R",        "L",        "L",        "R",        "R",        "L",              "L",        "R",        "R",        "L",        "L"),
> 
>                     "Gr" = c(1,      2,           1,           2,           1,           2,           1,           2,              1,           2,           1,           2) )
> 
> 
> 
> MyData <- within(MyData, {
> 
>    Gender  <- factor(Gender)
> 
>    Hand <- factor(Hand)
> 
>    Gr   <- factor(Gr)
> 
> }
> 
> )
> 
>> 
> str(MyData)
> 
>> 
> library(ggplot2)
> 
>> 
> #################     Part 1  #########################################
> 
>> 
> MyT <- table(MyData$Gender, MyData$Hand)
> 
> print(MyT)
> 
>> 
> MyChi<- chisq.test(MyT)
> 
> print(MyChi)
> 
> dMyT <- data.frame(as.table(as.matrix(table(MyData$Gender, MyData$Hand, useNA = "ifany"))))
> 
> name2<- c("Gender", "Hand", "Frequency")
> 
> names(dMyT) <- name2
> 
>> 
> ggplot(data = na.omit(dMyT), aes(fill=Hand, y=Frequency, x=Gender)) +
> 
>      geom_bar(position="dodge", stat="identity")
> 
>> 
> #################  Part 2   ################
> 
>> 
> # I want to be able to pass Gender and Hand as V1 and V2 , respectively to
> 
> # table, Chi-Square test and ggplot
> 
>> 
> V1 <- "Gender"
> 
> V2 <- "Hand"
> 
>> 
> MyT2 <- table(MyData$V1, MyData$V2)
> 
>> 
> print(MyT)
> 
>> 
> MyChi<- chisq.test(MyT)
> 
> print(MyChi)
> 
> dMyT <- data.frame(as.table(as.matrix(table(MyData$V1, MyData$V2, useNA = "ifany"))))
> 
> name2<- c(V1, V2, "Frequency")
> 
> names(dMyT) <- name2
> 
>> 
> ggplot(data = na.omit(dMyT), aes(fill=V2, y=Frequency, x=V1)) +
> 
>      geom_bar(position="dodge", stat="identity")
> 
>> 
>> 
>> 
>> 
> ----------------------------------------------------
> 
> Dr. Seyit Ali KAYIS
> 
> Bolu Abant Izzet Baysal University, Faculty of Medicine
> 
> Department of Biostatistics and Medical Informatics
> 
> Bolu, Turkey
> 
> 
> 
>   <mailto:s_a_kayis using yahoo.com <mailto:s_a_kayis using yahoo.com> > s_a_kayis using yahoo.com <mailto:s_a_kayis using yahoo.com> ,  <mailto:s_a_kayis using hotmail.com <mailto:s_a_kayis using hotmail.com> > s_a_kayis using hotmail.com <mailto:s_a_kayis using hotmail.com>
> 
> Tel: +90 374 254 30 32 Mobile: +90 535 587 1139
> 
> 
> 
> Greetings from Bolu, Turkey
> 
> ------------------------------------------------------
> 
>> 
> 
>          [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help using r-project.org <mailto: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.
> 
> 
> 	[[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