There are endless ways to do what you want, Seyit. If you wish to remain in
base R, using the names function on the left-hand side changes the names as in:
names(something) <- c("new", "names")
And in general, you may want to learn how to use an alternate set of methods
that work well with ggplot in the tidyverse such as select() that lets you
choose which columns of a data.frame (or tibble) to keep while optionally
renaming them, and the rename() function and the mutate() function and ways to
combine them to do lots of work. They also allow you to not use within() the
way you are doing.
It is amusing you want names like V1. Indeed some R functions default to such
names.
-----Original Message-----
From: R-help <[email protected]> On Behalf Of Seyit Ali KAYIS
Sent: Monday, December 28, 2020 1:32 PM
To: 'Bert Gunter' <[email protected]>; 'R-help' <[email protected]>;
[email protected]; [email protected]
Subject: Re: [R] Passing variable name
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:[email protected]]
Sent: Monday, 28 December 2020 12:08 AM
To: [email protected]
Cc: R-help <[email protected]>
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 <[email protected]
<mailto:[email protected]> > 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:[email protected] <mailto:[email protected]> > [email protected]
<mailto:[email protected]> , <mailto:[email protected]
<mailto:[email protected]> > [email protected]
<mailto:[email protected]>
Tel: +90 374 254 30 32 Mobile: +90 535 587 1139
Greetings from Bolu, Turkey
------------------------------------------------------
�
[[alternative HTML version deleted]]
______________________________________________
[email protected] <mailto:[email protected]> 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]]
______________________________________________
[email protected] 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.
______________________________________________
[email protected] 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.