Qill Bel
2017-Mar-24 17:12 UTC
[R] change the value of vector based on the string of its name
Dear R-users,
Imagine I have 3 vectors:
*proc1<-0*
*proc2<-0*
*cpd<-c("proc1","proc2")*
How can I change the value of proc1 to 1, based on vector cpd only?
I tried with *as.factor(cpd[1])<-1*, but it produces an error.
Any idea how could I achieve that?
[[alternative HTML version deleted]]
David Winsemius
2017-Mar-24 22:45 UTC
[R] change the value of vector based on the string of its name
> On Mar 24, 2017, at 10:12 AM, Qill Bel <qillbel at gmail.com> wrote: > > Dear R-users, > > Imagine I have 3 vectors: > *proc1<-0* > *proc2<-0* > *cpd<-c("proc1","proc2")*The `cpd` vector has only character values in it, and has no relation to either the `proc1` or `proc2` vectors. If you want it refer to them (or contain their values), then omit the quotes. The values will not retain their names in this instance. The R names `proc`` and `proc2` will be looked up and their values places in an unnamed numeric vector. You could however make it so with: cpd<-c("proc1"=proc1,"proc2"=proc2) #The quotes are not needed and so this would be equivalent" cpd<-c( proc1=proc1, proc2=proc2) There is a `get`-function, but teaching you how to use it to solve the problem is likely to be a disservice since it would allow you to continue using R as a macro-processor.>> How can I change the value of proc1 to 1, based on vector cpd only? > I tried with *as.factor(cpd[1])<-1*, but it produces an error.Doesn't make much sense to me to use assignment to a factor in this instance, but that's probably because we come from different programming backgrounds. Neither your code nor mine would have produced a factor vector. You should say in natural language what it is that you want to happen. (Perhaps) Try this: cpd[1] <- 1 Or: cpd['proc1'] <- 1> > Any idea how could I achieve that? > > [[alternative HTML version deleted]]And learn to post in plain text. Reading the Posting Guide will also be a good idea. As would be studying a bit longer the "Introduction to R" that is shipped with every installation.> > ______________________________________________ > R-help at 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.David Winsemius Alameda, CA, USA
Jim Lemon
2017-Mar-25 09:04 UTC
[R] change the value of vector based on the string of its name
Hi Qill,
If I have interpreted your example correctly:
proc1<-0
proc2<-0
cpd<-c("proc1","proc2")
assign("proc1",which(cpd=="proc1"))
Jim
On Sat, Mar 25, 2017 at 4:12 AM, Qill Bel <qillbel at gmail.com>
wrote:> Dear R-users,
>
> Imagine I have 3 vectors:
> *proc1<-0*
> *proc2<-0*
> *cpd<-c("proc1","proc2")*
>
> How can I change the value of proc1 to 1, based on vector cpd only?
> I tried with *as.factor(cpd[1])<-1*, but it produces an error.
>
> Any idea how could I achieve that?
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.