[R] Defining partial list of variables

Eric Berger er|cjberger @end|ng |rom gm@||@com
Tue Jan 5 11:01:25 CET 2021


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 using 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 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>
>> 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 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 using 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]]



More information about the R-help mailing list