我正在尝试使用变量作为列名从数据框中选择一列,但问题是列名称已转义。我有一些解决方法,包括更改我的代码太多了,无论如何我一直在四处寻找,如果有人知道这种奇怪案例的解决方案,我很好奇。
我的数据集实际上是一个时间序列列表(我在一些操作后构建),这将是一个玩具示例。
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
正如我所说,有一些解决方法,例如:更改系列列表中的所有列名称,但我只是想知道。非常感谢你。
答案 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