2017-05-05 59 views
0

我想从一个数据框中选择一个列,使用一个变量作为列名,列名被转义的问题。我有一些解决方法来做到这一点,这涉及到更改我的代码太多,无论如何,我一直在四处寻找,我很好奇,如果有人知道这种奇怪的情况的解决方案。当子列名被转义时,带有变量的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 

我不把在列名越狱`因为我想,而是因为他们都从过程日期我按照构建数据集。

如果我知道列名我可以访问这个样子,

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

你得到NULL,因为你是在试图访问'name1'作为它不是的'df'变量“T。你将需要使用'['来使用名字 – Sotos

回答

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 
+0

只是输入这个;) –