2017-05-05 113 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

只是輸入這個;) –