Home > OS >  Can't extract the element properly using the operator `$` in r when using the character variabl
Can't extract the element properly using the operator `$` in r when using the character variabl

Time:07-19

The codes are as follows

l1<-list(1,2)
names(l1)<-c("a","b")
l1$"b"
a<-"b"
l1$a

The output for l1$"b" is 2,but for l1$a is 1. This is not consistent.I don't know why and how to deal with it.

I hope you can help me! Thank you!

CodePudding user response:

You can use this functional notation

a<-"b"

`[[`(l1 , a)

#> 2

CodePudding user response:

To directly respond to your question about why this is the case: unlike the [ and [[ operators, the $ operator does not allow computed indices, i.e. The name used to index into x as in x$name must be a literal character string or symbol.

So, the semantics of l1$a is something like:

get(quote(a), envir = as.environment(l1), inherits = FALSE)
# Lightly modified from ?`$` for clarity

As langtang and Mohamed have noted above, you can use the [ or [[ operators instead which do allow computed indices.

  •  Tags:  
  • r
  • Related