Thanks Eric. Perhaps I should know when to stop. The approach produces a slightly different variable list (note the [[1]]). Consequently, I was not able to use xx in defining my regression formula. > x<-colnames(subset(mydata,select=c( +??? hhsize,urban,male, +??? age3045,age4659,age60, # age1529 +??? highsc,tert,?????????? # primary +??? gov,nongov,??????????? # unemp +??? married))); x ?[1] "hhsize"? "urban"?? "male"??? "age3045" "age4659" "age60" "highsc"? "tert" ?[9] "gov"???? "nongov"? "married" > xx<-strsplit(gsub("[\n ]","", +??? "hhsize,urban,male, +???? age3045,age4659,age60, +???? highsc,tert, +???? gov,nongov, +???? married" + ),","); xx [[1]] ?[1] "hhsize"? "urban"?? "male"??? "age3045" "age4659" "age60" "highsc"? "tert" ?[9] "gov"???? "nongov"? "married" > eq1<-my.formula(y="cig",x=x); eq1 cig ~ hhsize + urban + male + age3045 + age4659 + age60 + highsc + ??? tert + gov + nongov + married > eq2<-my.formula(y="cig",x=xx); eq2 cig ~ c("hhsize", "urban", "male", "age3045", "age4659", "age60", ??? "highsc", "tert", "gov", "nongov", "married") On 2021/1/5 ?? 06:01, Eric Berger wrote:> 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 > <mailto: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 >> <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]]
wrap it in unlist xx <- unlist(strsplit( .... )) On Tue, Jan 5, 2021 at 12:59 PM Steven Yen <styen at ntu.edu.tw> wrote:> Thanks Eric. Perhaps I should know when to stop. The approach produces a > slightly different variable list (note the [[1]]). Consequently, I was not > able to use xx in defining my regression formula. > > > x<-colnames(subset(mydata,select=c( > > + hhsize,urban,male, > + age3045,age4659,age60, # age1529 > + highsc,tert, # primary > + gov,nongov, # unemp > + married))); x > [1] "hhsize" "urban" "male" "age3045" "age4659" "age60" "highsc" > "tert" > [9] "gov" "nongov" "married" > > xx<-strsplit(gsub("[\n ]","", > + "hhsize,urban,male, > + age3045,age4659,age60, > + highsc,tert, > + gov,nongov, > + married" > + ),","); xx > [[1]] > [1] "hhsize" "urban" "male" "age3045" "age4659" "age60" "highsc" > "tert" > [9] "gov" "nongov" "married" > > > eq1<-my.formula(y="cig",x=x); eq1 > cig ~ hhsize + urban + male + age3045 + age4659 + age60 + highsc + > tert + gov + nongov + married > > eq2<-my.formula(y="cig",x=xx); eq2 > cig ~ c("hhsize", "urban", "male", "age3045", "age4659", "age60", > "highsc", "tert", "gov", "nongov", "married") > > On 2021/1/5 ?? 06:01, Eric Berger wrote: > > 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]]