[R] Remove double quotation marks
Nutter, Benjamin
NutterB at ccf.org
Tue Dec 29 22:01:57 CET 2009
It seems from your example that you're assuming all of the vectors have
the same length. If this is the case, then a data.frame might be your
friend.
> df <- data.frame(
v1 = c(0, 1, 0),
v2 = c(1, 1, 0),
v3 = c(2, 1, 2),
v4 = c(2, 2, 1),
v5 = c(0, 1, 1) )
> x <- 5
> get.var <- c("v1", "v2", paste("v", x, sep=""))
> df[, get.var]
Or, if you know your variables in the data.frame will be named
sequentially
> df[, c(1, 2, x)]
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On Behalf Of Lisa
Sent: Tuesday, December 29, 2009 3:55 PM
To: r-help at r-project.org
Subject: Re: [R] Remove double quotation marks
Thank you for your help. But here I just want to combine some vectors by
column based on the numbers determined by other R script.
For example, I have five vectors:
v1 <- c(0, 1, 0)
v2 <- c(1, 1, 0)
v3 <- c(2, 1, 2)
v4 <- c(2, 2, 1)
v5 <- c(0, 1, 1)
If I am going to combine the first two vectors, and one more other
vector determined by my other R script, say, vector 5. Then my R script
is
x <- 5
cbind(v1, v2, paste("v", x, sep = ""))
The output is
v1 v2
[1,] "0" "1" "v5"
[2,] "1" "1" "v5"
[3,] "0" "0" "v5"
This is not what I want. I want to get this:
v1 v2 v5
[1,] 0 1 0
[2,] 1 1 1
[3,] 0 0 1
Can you give me further suggestions or comments? Thanks a lot.
Lisa
Barry Rowlingson wrote:
>
> On Tue, Dec 29, 2009 at 6:31 PM, Lisa <lisajca at gmail.com> wrote:
>>
>> Thank you for your reply. But in the following case, "cat()" or
"print()"
>> doesn't work.
>>
>> data.frame(cbind(variable 1, variable 2, cat(paste("variable", x),
>> "\n"))), where x is a random number generated by other R script.
>>
>> Lisa
>
> Yes, because you are Doing It Wrong. If you have data that is indexed
> by an integer, don't store it in variables called variable1, variable2
> etc, because very soon you will be posting a message to R-help that is
> covered in the R FAQ...
>
> Store it in a list:
>
> v = list()
> v[[1]] = c(1,2,3,4,5)
> v[[2]] = c(4,5,6,7,8,9,9,9)
>
> then you can do v[[i]] for integer values of i.
>
> If you really really must get values of variable by name, perhaps
> because someone has given you a data file with variables called
> variable1 to variable99, then use the paste() construction together
> with the 'get' function:
>
> [ not tested, but should work ]
>
> > v1="99"
> > v2="102"
> > i=2
> > get(paste("v",i,sep=""))
> [1] 102
>
> Barry
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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.
>
>
--
View this message in context:
http://n4.nabble.com/Remove-double-quotation-marks-tp990502p990586.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________
R-help at r-project.org mailing list
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.
===================================
P Please consider the environment before printing this e-mail
Cleveland Clinic is ranked one of the top hospitals
in America by U.S.News & World Report (2009).
Visit us online at http://www.clevelandclinic.org for
a complete listing of our services, staff and
locations.
Confidentiality Note: This message is intended for use\...{{dropped:13}}
More information about the R-help
mailing list