[R] Defining partial list of variables

Steven Yen @tyen @end|ng |rom ntu@edu@tw
Tue Jan 5 10:47:55 CET 2021


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 using ntu.edu.tw 
> <mailto:styen using 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 using ntu.edu.tw
>     <mailto:styen using 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 using r-project.org <mailto:R-help using 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 using r-project.org <mailto:R-help using 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]]



More information about the R-help mailing list