Here we go! BUT, it works great for a continuous line. With line break(s), I got the nuisance "\n" inserted. > x<-strsplit("hhsize,urban,male,gov,nongov,married",","); x [[1]] [1] "hhsize"? "urban"?? "male"??? "gov"???? "nongov"? "married" > x<-strsplit("hhsize,urban,male, +???????????? gov,nongov,married",","); x [[1]] [1] "hhsize"??????????? "urban"???????????? "male" "\n??????????? gov" [5] "nongov"??????????? "married" On 2021/1/5 ?? 05:34, Eric Berger wrote:> zx<-strsplit("age,exercise,income,white,black,hispanic,base,somcol,grad,employed,unable,homeowner,married,divorced,widowed",",") > > > > On Tue, Jan 5, 2021 at 11:01 AM Steven Yen <styen at ntu.edu.tw > <mailto:styen at ntu.edu.tw>> wrote: > > Thank you, Jeff. IMO, we are all here to make R work better to > suit our > various needs. All I am asking is an easier way to define variable > list > zx, differently from the way z0 , x0, and treat are defined. > > ?> zx<-colnames(subset(mydata,select=c( > + age,exercise,income,white,black,hispanic,base,somcol,grad,employed, > +???? unable,homeowner,married,divorced,widowed))) > ?> z0<-c("fruit","highblood") > ?> x0<-c("vgood","poor") > ?> treat<-"depression" > ?> eq1 <-my.formula(y="depression",x=zx,z0) > ?> eq2 <-my.formula(y="bmi",?????? x=zx,x0) > ?> eq2t<-my.formula(y="bmi",?????? x=zx,treat) > ?> eqs<-list(eq1,eq2); eqs > [[1]] > depression ~ age + exercise + income + white + black + hispanic + > ???? base + somcol + grad + employed + unable + homeowner + married + > ???? divorced + widowed + fruit + highblood > > [[2]] > bmi ~ age + exercise + income + white + black + hispanic + base + > ???? somcol + grad + employed + unable + homeowner + married + > ???? divorced + widowed + vgood + poor > > ?> eqt<-list(eq1,eq2t); eqt > [[1]] > depression ~ age + exercise + income + white + black + hispanic + > ???? base + somcol + grad + employed + unable + homeowner + married + > ???? divorced + widowed + fruit + highblood > > [[2]] > bmi ~ age + exercise + income + white + black + hispanic + base + > ???? somcol + grad + employed + unable + homeowner + married + > ???? divorced + widowed + depression > > On 2021/1/5 ?? 04:18, Jeff Newmiller wrote: > > IMO if you want to hardcode a formula then simply hardcode a > formula. If you want 20 formulas, write 20 formulas. Is that > really so bad? > > > > If you want to have an abbreviated way to specify sets of > variables without conforming to R syntax then put them into data > files and read them in using a format of your choice. > > > > But using NSE to avoid using quotes for entering what amounts to > in-script data is abuse of the language justified by laziness... > the amount of work you put yourself and anyone else who reads your > code through is excessive relative to the benefit gained. > > > > NSE has its strengths... but as a method of creating data > objects it sucks. Note that even the tidyverse (now) requires you > to use quotes when you are not directly referring to something > that already exists. And if you were... you might as well be > creating a formula. > > > > On January 4, 2021 11:14:54 PM PST, Steven Yen <styen at ntu.edu.tw > <mailto:styen at ntu.edu.tw>> wrote: > >> I constantly define variable lists from a data frame (e.g., to > define a > >> > >> regression equation). Line 3 below does just that. Placing each > >> variable > >> name in quotation marks is too much work especially for a long > list so > >> I > >> do that with line 4. Is there an easier way to accomplish > this----to > >> define a list of variable names containing "a","c","e"? Thank you! > >> > >>> data<-as.data.frame(matrix(1:30,nrow=6)) > >>> colnames(data)<-c("a","b","c","d","e"); data > >>? ? a? b? c? d? e > >> 1 1? 7 13 19 25 > >> 2 2? 8 14 20 26 > >> 3 3? 9 15 21 27 > >> 4 4 10 16 22 28 > >> 5 5 11 17 23 29 > >> 6 6 12 18 24 30 > >>> x1<-c("a","c","e"); x1 # line 3 > >> [1] "a" "c" "e" > >>> x2<-colnames(subset(data,select=c(a,c,e))); x2 # line 4 > >> [1] "a" "c" "e" > >> > >> ______________________________________________ > >> R-help at r-project.org <mailto:R-help at r-project.org> mailing list > -- To UNSUBSCRIBE and more, see > >> https://stat.ethz.ch/mailman/listinfo/r-help > <https://stat.ethz.ch/mailman/listinfo/r-help> > >> PLEASE do read the posting guide > >> http://www.R-project.org/posting-guide.html > <http://www.R-project.org/posting-guide.html> > >> and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > R-help at r-project.org <mailto:R-help at r-project.org> mailing list -- > To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > <https://stat.ethz.ch/mailman/listinfo/r-help> > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > <http://www.R-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. >[[alternative HTML version deleted]]
If your column names have no spaces the following should work x<-strsplit(gsub("[\n ]","", "hhsize,urban,male, + gov,nongov,married"),","); x On Tue, Jan 5, 2021 at 11:47 AM Steven Yen <styen at ntu.edu.tw> wrote:> Here we go! BUT, it works great for a continuous line. With line break(s), > I got the nuisance "\n" inserted. > > > x<-strsplit("hhsize,urban,male,gov,nongov,married",","); x > [[1]] > [1] "hhsize" "urban" "male" "gov" "nongov" "married" > > > x<-strsplit("hhsize,urban,male, > + gov,nongov,married",","); x > [[1]] > [1] "hhsize" "urban" "male" > "\n gov" > [5] "nongov" "married" > On 2021/1/5 ?? 05:34, Eric Berger wrote: > > > zx<-strsplit("age,exercise,income,white,black,hispanic,base,somcol,grad,employed,unable,homeowner,married,divorced,widowed",",") > > > > On Tue, Jan 5, 2021 at 11:01 AM Steven Yen <styen at ntu.edu.tw> wrote: > >> Thank you, Jeff. IMO, we are all here to make R work better to suit our >> various needs. All I am asking is an easier way to define variable list >> zx, differently from the way z0 , x0, and treat are defined. >> >> > zx<-colnames(subset(mydata,select=c( >> + age,exercise,income,white,black,hispanic,base,somcol,grad,employed, >> + unable,homeowner,married,divorced,widowed))) >> > z0<-c("fruit","highblood") >> > x0<-c("vgood","poor") >> > treat<-"depression" >> > eq1 <-my.formula(y="depression",x=zx,z0) >> > eq2 <-my.formula(y="bmi", x=zx,x0) >> > eq2t<-my.formula(y="bmi", x=zx,treat) >> > eqs<-list(eq1,eq2); eqs >> [[1]] >> depression ~ age + exercise + income + white + black + hispanic + >> base + somcol + grad + employed + unable + homeowner + married + >> divorced + widowed + fruit + highblood >> >> [[2]] >> bmi ~ age + exercise + income + white + black + hispanic + base + >> somcol + grad + employed + unable + homeowner + married + >> divorced + widowed + vgood + poor >> >> > eqt<-list(eq1,eq2t); eqt >> [[1]] >> depression ~ age + exercise + income + white + black + hispanic + >> base + somcol + grad + employed + unable + homeowner + married + >> divorced + widowed + fruit + highblood >> >> [[2]] >> bmi ~ age + exercise + income + white + black + hispanic + base + >> somcol + grad + employed + unable + homeowner + married + >> divorced + widowed + depression >> >> On 2021/1/5 ?? 04:18, Jeff Newmiller wrote: >> > IMO if you want to hardcode a formula then simply hardcode a formula. >> If you want 20 formulas, write 20 formulas. Is that really so bad? >> > >> > If you want to have an abbreviated way to specify sets of variables >> without conforming to R syntax then put them into data files and read them >> in using a format of your choice. >> > >> > But using NSE to avoid using quotes for entering what amounts to >> in-script data is abuse of the language justified by laziness... the amount >> of work you put yourself and anyone else who reads your code through is >> excessive relative to the benefit gained. >> > >> > NSE has its strengths... but as a method of creating data objects it >> sucks. Note that even the tidyverse (now) requires you to use quotes when >> you are not directly referring to something that already exists. And if you >> were... you might as well be creating a formula. >> > >> > On January 4, 2021 11:14:54 PM PST, Steven Yen <styen at ntu.edu.tw> >> wrote: >> >> I constantly define variable lists from a data frame (e.g., to define a >> >> >> >> regression equation). Line 3 below does just that. Placing each >> >> variable >> >> name in quotation marks is too much work especially for a long list so >> >> I >> >> do that with line 4. Is there an easier way to accomplish this----to >> >> define a list of variable names containing "a","c","e"? Thank you! >> >> >> >>> data<-as.data.frame(matrix(1:30,nrow=6)) >> >>> colnames(data)<-c("a","b","c","d","e"); data >> >> a b c d e >> >> 1 1 7 13 19 25 >> >> 2 2 8 14 20 26 >> >> 3 3 9 15 21 27 >> >> 4 4 10 16 22 28 >> >> 5 5 11 17 23 29 >> >> 6 6 12 18 24 30 >> >>> x1<-c("a","c","e"); x1 # line 3 >> >> [1] "a" "c" "e" >> >>> x2<-colnames(subset(data,select=c(a,c,e))); x2 # line 4 >> >> [1] "a" "c" "e" >> >> >> >> ______________________________________________ >> >> 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. >> >> ______________________________________________ >> 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. >> >[[alternative HTML version deleted]]