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,868
  • 4
  • 36
  • 50
  • 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
  • 77,383
  • 16
  • 167
  • 187