Thanks, Duncan. Below is the repost of my question in plain text mode.
I'm trying to get the field value of a reference object by the field name, but the dollar symbol behaves quite unusual. See example below .foo <- setRefClass( "foo", fields = list( a = "integer" ) ) x <- .foo$new(a=1L) ## This is OK x$a ## This is OK `$`(x, "a") ## But this is not OK i <- "a" `$`(x, i) For the last line of code I get this error Error in envRefInferField(x, what, getClass(class(x)), selfEnv) : ‘i’ is not a valid field or method name for reference class “foo” It looks like when calling the dollar symbol using the function format, it treats the input argument as a character literal and does not evaluate it inside the function. I know we have the function `field` to get the slot variable, but I wonder if this is designed on purpose as the above example works for both list and S4 system. Best, Jiefei On Sat, Mar 27, 2021 at 10:20 PM Duncan Murdoch <murdoch.dun...@gmail.com> wrote: > > On 27/03/2021 10:16 a.m., Jiefei Wang wrote: > > Hi all, > > > > I'm trying to get the field value of a reference object by the field name, > > but the dollar symbol behaves quite unusual. See example below > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *.foo <- setRefClass( "foo", fields = list( a = "integer" > > ))x <- .foo$new(a=1L)## This is OKx$a## This is OK`$`(x, "a")## But this is > > not OKi <- "a"`$`(x, i)* > > This is really hard to read. Please post it again, but don't use HTML. > > Duncan Murdoch > > > > > For the last line of code I get this error > > > > > > *Error in envRefInferField(x, what, getClass(class(x)), selfEnv) : ‘i’ is > > not a valid field or method name for reference class “foo”* > > > > It looks like when calling the dollar symbol using the function format, it > > treats the input argument as a character literal and does not evaluate it > > inside the function. I know we have the function `field` to get the slot > > variable, but I wonder if this is designed on purpose as the above example > > works for both list and S4 system. > > > > Best, > > Jiefei > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel