0

I am trying to select a column from a dataframe using a variable as a column name, with the problem that the column name is escaped. I have a couple of workarounds for doing it, which involve changing my code a bit too much, and anyway I've been looking around and I am curious if anybody knew the solution for this kind of weird case.

My dataset is actually a list of time series (which I construct after some operations), this would be a toy example.

df <- list(`01/19/17`=seq(1,10), `01/20/17`=seq(2,11))
> df
$`01/19/17`
 [1]  1  2  3  4  5  6  7  8  9 10

$`01/20/17`
 [1]  2  3  4  5  6  7  8  9 10 11

I don't put the escapes ` in the column names because I want to, but because they come as dates from the process I follow to construct the dataset.

If I know the column name I can access like this,

df$`01/19/17`

If I want to use a variable, looking around e.g. here I see I could rewrite it to something like this,

`$`(df, `01/19/17`)

But I cannot assign a variable like this,

> name1 <- `01/19/17`
Error: object '01/19/17' not found

and if assign it this other way I get a NULL,

> name1 <- "01/19/17"
> `$`(df, name1)
NULL

As I say there are workarounds like e.g. changing all the column names in the list of series, but I just would like to know. Thank you so much.

Community
  • 1
  • 1
lrnzcig
  • 3,652
  • 4
  • 35
  • 48
  • You get NULL because you are trying to access `name1` as a variable of `df` which it isn't. You will need to use `[` to use names – Sotos May 05 '17 at 17:54

1 Answers1

1

You can access with brackets rather than with $, even when the key is a string:

df <- list(`01/19/17`=seq(1,10), `01/20/17`=seq(2,11))
name1 <- "01/19/17"

df[[name1]]
# [1]  1  2  3  4  5  6  7  8  9 10
David Robinson
  • 74,512
  • 15
  • 159
  • 179