Your definition of "value" is inappropriately limited. A data frame is a value. 
It is not a numeric value, but it is a value. See 3.1.3 in the R Language 
Definition document.

Likewise, an atomic vector is a value. All of the elements of the vector 
together are in fact a value. Not just the individual elements (which don't 
stand on their own anyway... a scalar is really a length 1 vector). So yes, 
mtcars$disp does refer to a value.

As to whether you get tired when using variable length elements in a list, that 
is your problem. Lots of data are passed through APIs in irregular lists.

On February 8, 2022 8:05:12 PM PST, "Ebert,Timothy Aaron" <teb...@ufl.edu> 
wrote:
>"A variable in R can refer to many things, ..." I agree.
>"It absolutely _can_ refer to a list, ..." I partly agree. In R as a 
>programming language I agree. In R as a statistical analysis tool then only 
>partly. Typically one would need to limit the list so each variable would be 
>of the same length and all values within the variable be of the same data type 
>(integer, real, factor, character). As a programmer yes, as a statistician not 
>really unless you always qualify the type of list considered and that gets 
>tiresome.
>
>R does name individual elements using numeric place names: hence df[row, 
>column]. Each element must have a unique address, and that is true in all 
>computer languages.
>
>A dataframe is a list of columns of the same length containing the same data 
>type within a column. 
>
>mtcars$disp does not have a value (a value is one number). With 32 elements I 
>can calculate a mean and the mean is a value. 32 numbers is not a value. I 
>suppose a single value could be the starting memory address of the name, but I 
>don't see how that distinction helps unless one is doing Assembly or Machine 
>language programming. 
>
>I have never used get(), so I will keep that in mind. I agree that it makes 
>life much easier to enter the data in the way it will be analyzed. 
>
>
> 
>
>-----Original Message-----
>From: Jeff Newmiller <jdnew...@dcn.davis.ca.us> 
>Sent: Tuesday, February 8, 2022 10:10 PM
>To: r-help@r-project.org; Ebert,Timothy Aaron <teb...@ufl.edu>; Richard 
>O'Keefe <rao...@gmail.com>; Erin Hodgess <erinm.hodg...@gmail.com>
>Cc: r-help@r-project.org
>Subject: Re: [R] Convert a character string to variable names
>
>[External Email]
>
>A variable in R can refer to many things, but it cannot be an element of a 
>vector. It absolutely _can_ refer to a list, a list of lists, a function, an 
>environment, and any of the various kinds of atomic vectors that you seem to 
>think of as variables. (R does _not_ name individual elements of vectors, 
>unlike many other languages.)
>
>The things you can do with the mtcars object may be different than the things 
>you can do with the object identified by the expression mtcars$disp, but the 
>former has a variable name in an environment while the latter is embedded 
>within the former. mtcars$disp is shorthand for the expression mtcars[[ "disp" 
>]] which searches the names attribute of the mtcars list (a data frame is a 
>list of columns) to refer to that object.
>
>R allows non-standard evaluation to make elements of lists accessible as 
>though they were variables in an environment, such as with( mtcars, disp ) or 
>various tidyverse evaluation conventions. But while the expression mtcars$disp 
>DOES have a value( it is an atomic vector of 32 integer elements) it is not a 
>variable so get("mtcars$disp") cannot be expected to work (as it does not). 
>You may be confusing "variable" with "object" ... lots of objects have no 
>variable names.
>
>I have done all sorts of complicated data manipulations in R, but I have never 
>found a situation where a use of get() could not be replaced with a clearer 
>way to get the job done. Using lists is central to this... avoid making 
>distinct variables in the first place if you plan to be retrieving them later 
>indirectly like this.
>
>On February 8, 2022 5:45:39 PM PST, "Ebert,Timothy Aaron" <teb...@ufl.edu> 
>wrote:
>>
>>I had thought that mtcars in "mtcars$disp" was the name of a dataframe and 
>>that "disp" was the name of a column in the dataframe. If I would make a 
>>model like horse power = displacement then "disp" would be a variable in the 
>>model and I can find values for this variable in the "disp" column in the 
>>"mtcars" dataframe. I am not sure how I would use "mtcars" as a variable.
>>"mtcars$disp" has no specific value, though it will have a specific value for 
>>any given row of data (assuming rows are observations).
>>
>>Tim
>>
>>
>>-----Original Message-----
>>From: R-help <r-help-boun...@r-project.org> On Behalf Of Richard 
>>O'Keefe
>>Sent: Tuesday, February 8, 2022 8:17 PM
>>To: Erin Hodgess <erinm.hodg...@gmail.com>
>>Cc: r-help@r-project.org
>>Subject: Re: [R] Convert a character string to variable names
>>
>>[External Email]
>>
>>"mtcars$disp" is not a variable name.
>>"mtcars" is a variable name, and
>>get("mtcars") will get the value of that variable assign("mtcars", 
>>~~whatever~~) will set it.
>>mtcars$disp is an *expression*,
>>where $ is an indexing operator
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__cran.r-2Dproject.o
>>rg_doc_manuals_r-2Drelease_R-2Dlang.html-23Indexing&d=DwICAg&c=sJ6xIWYx
>>-zLMB3EPkvcnVg&r=9PEhQh2kVeAsRzsn7AkP-g&m=CI-7ZdIwlhUvhmOkVD7KJkv3IvSSW
>>y4ix2Iz1netW81V-NUV8aOVVqyn5-fmD6cf&s=RjRC5kve6D8k59qZQYcX-PR-aA4TTu1yf
>>LPBhHxSlWk&e=
>>so what you want is
>>> mtcars <- list(cyl=4, disp=1.8)
>>> eval(parse(text="mtcars$disp"))
>>[1] 1.8
>>
>>Though it's easy to do this, it's very seldom a good idea.
>>The combination of parse and eval can do ANYTHING, no matter how disastrous.  
>>Less powerful techniques are safer.
>>Where do these strings come from in the first place?
>>Why isn't it c("disp", "hp", "cyl")?
>>
>>On Tue, 8 Feb 2022 at 11:56, Erin Hodgess <erinm.hodg...@gmail.com> wrote:
>>
>>> Hello!
>>>
>>> I have a character string that is a vector of variable names.  I 
>>> would like to use those names to access the variables and create a matrix.
>>> I tried the following:
>>>
>>> > .x
>>>
>>> [1] "mtcars$disp" "mtcars$hp"   "mtcars$cyl"
>>>
>>> > .y <- NULL
>>>
>>> > for(i in 1:3) {
>>>
>>> + .y[i] <- c(as.name(.x[[i]]))
>>>
>>> + }
>>>
>>> > .y
>>>
>>> [[1]]
>>>
>>> `mtcars$disp`
>>>
>>>
>>> [[2]]
>>>
>>> `mtcars$hp`
>>>
>>>
>>> [[3]]
>>>
>>> `mtcars$cyl`
>>>
>>>
>>> But I am having trouble converting the variables in .y into a matrix.
>>>
>>>
>>> I tried all kinds of stuff with bquote, deparse, do.call, but no good.
>>>
>>>
>>> I have a feeling that it's something simple, and I'm just not seeing it.
>>>
>>>
>>> Thanks,
>>>
>>> Erin
>>>
>>>
>>>
>>>
>>> Erin Hodgess, PhD
>>> mailto: erinm.hodg...@gmail.com
>>>
>>>         [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 
>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mai
>>> l 
>>> man_listinfo_r-2Dhelp&d=DwICAg&c=sJ6xIWYx-zLMB3EPkvcnVg&r=9PEhQh2kVeA
>>> s
>>> Rzsn7AkP-g&m=CI-7ZdIwlhUvhmOkVD7KJkv3IvSSWy4ix2Iz1netW81V-NUV8aOVVqyn
>>> 5 -fmD6cf&s=c8oCLZK8TFAAs5d3vhDyB52KR2I9WWSTg6kDjL8orcI&e=
>>> PLEASE do read the posting guide
>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.R-2Dproject.o
>>> r 
>>> g_posting-2Dguide.html&d=DwICAg&c=sJ6xIWYx-zLMB3EPkvcnVg&r=9PEhQh2kVe
>>> A 
>>> sRzsn7AkP-g&m=CI-7ZdIwlhUvhmOkVD7KJkv3IvSSWy4ix2Iz1netW81V-NUV8aOVVqy
>>> n 5-fmD6cf&s=fTO2Qrx6DmlzcB2uqN4fsDmTMVZwfCsDbLtzMigHWXI&e=
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>>        [[alternative HTML version deleted]]
>>
>>______________________________________________
>>R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailm
>>an_listinfo_r-2Dhelp&d=DwICAg&c=sJ6xIWYx-zLMB3EPkvcnVg&r=9PEhQh2kVeAsRz
>>sn7AkP-g&m=CI-7ZdIwlhUvhmOkVD7KJkv3IvSSWy4ix2Iz1netW81V-NUV8aOVVqyn5-fm
>>D6cf&s=c8oCLZK8TFAAs5d3vhDyB52KR2I9WWSTg6kDjL8orcI&e=
>>PLEASE do read the posting guide 
>>https://urldefense.proofpoint.com/v2/url?u=http-3A__www.R-2Dproject.org
>>_posting-2Dguide.html&d=DwICAg&c=sJ6xIWYx-zLMB3EPkvcnVg&r=9PEhQh2kVeAsR
>>zsn7AkP-g&m=CI-7ZdIwlhUvhmOkVD7KJkv3IvSSWy4ix2Iz1netW81V-NUV8aOVVqyn5-f
>>mD6cf&s=fTO2Qrx6DmlzcB2uqN4fsDmTMVZwfCsDbLtzMigHWXI&e=
>>and provide commented, minimal, self-contained, reproducible code.
>>
>>______________________________________________
>>R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailm
>>an_listinfo_r-2Dhelp&d=DwIFaQ&c=sJ6xIWYx-zLMB3EPkvcnVg&r=9PEhQh2kVeAsRz
>>sn7AkP-g&m=jyG_tiJYdPBF8hat6uuafk5_ucrnBk_CkkVVmV3SLbXFMTeEFy-zgo7hVDFc
>>iokP&s=6B9_2qIT3ZzL4bGqJfWfMBQofnf6I2_bpLvdQIMDXj0&e=
>>PLEASE do read the posting guide 
>>https://urldefense.proofpoint.com/v2/url?u=http-3A__www.R-2Dproject.org
>>_posting-2Dguide.html&d=DwIFaQ&c=sJ6xIWYx-zLMB3EPkvcnVg&r=9PEhQh2kVeAsR
>>zsn7AkP-g&m=jyG_tiJYdPBF8hat6uuafk5_ucrnBk_CkkVVmV3SLbXFMTeEFy-zgo7hVDF
>>ciokP&s=TTQhZrau_AmlW41w76jtlT7yR-niL17-f1QgYsWePvQ&e=
>>and provide commented, minimal, self-contained, reproducible code.
>
>--
>Sent from my phone. Please excuse my brevity.

-- 
Sent from my phone. Please excuse my brevity.

______________________________________________
R-help@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.

Reply via email to