当列名被转义时,R子集数据框列与变量

时间:2017-05-05 17:50:00

标签: r

我正在尝试使用变量作为列名从数据框中选择一列,但问题是列名称已转义。我有一些解决方法,包括更改我的代码太多了,无论如何我一直在四处寻找,如果有人知道这种奇怪案例的解决方案,我很好奇。

我的数据集实际上是一个时间序列列表(我在一些操作后构建),这将是一个玩具示例。

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

我没有在列名中放置escape`因为我想,但是因为它们来自我遵循的过程的日期来构建数据集。

如果我知道我可以像这样访问的列名,

df$`01/19/17`

如果我想使用变量,请查看例如here我发现我可以将其重写为类似的内容,

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

但我无法分配这样的变量,

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

如果以其他方式分配,我得到一个NULL,

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

正如我所说,有一些解决方法,例如:更改系列列表中的所有列名称,但我只是想知道。非常感谢你。

1 个答案:

答案 0 :(得分:1)

即使密钥是字符串,您也可以使用括号而不是$进行访问:

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