2012-10-09 45 views

回答

8

setNames()函數應該爲你工作:

a <- "Numbers" 
b <- "Letters" 

bar <- setNames(data.frame(1:3, letters[1:3]), c(a, b)) 
bar 
# Numbers Letters 
# 1  1  a 
# 2  2  b 
# 3  3  c 
+0

太棒了!感謝它。如果我們正在製作幾個表或向量的data.frame,並且我們希望其中的一部分被變量命名,那麼您是否知道如何執行此任務:data.frame(a = 1:3,b),而b是一張桌子,我們不打算改變b列的名字? – Ali

+0

@AliSharifi,當你寫「* b是一個表*」時,你是指'table'還是'data.frame'?如果'b'是'data.frame',你可以使用'setNames(data.frame(1:3,b),c(a,names(b)))'(如果我正確理解你的問題)。 – A5C1D2H2I1M1N2O1R2T1

+0

完美,謝謝。 – Ali

5

我不認爲你可以在這裏做你想做的事情,因爲R解釋你提供的參數名稱的方式。實際上,您希望get(a) = 1:3,因爲您希望R將對象的值存儲爲a而不是標籤a本身,但該成語在這裏是不允許的。

我這樣做:

> a <- "foo" 
> bar <- data.frame(1:3) 
> names(bar) <- a 
> 
> bar 
    foo 
1 1 
2 2 
3 3 
+0

謝謝,我已經知道了這個解決方案。我正在尋找一條單線命令來做到這一點! – Ali

+1

如果你堅持:'bar < - \''< - \'(data.frame(1:3),a)' –

+0

@BlueMagister整潔,但我**真的**不推薦這個(&我得到印象你不是?!) –

2

嘗試:

a = structure(data.frame(1:3), names="foo") 
> a 
foo 
1 1 
2 2 
3 3 
0

Daniel Gerlanc's answer稍微修改使用鏈接

當您創建從其他數據類型的數據幀,例如動物園系列
a <- "foo" 
a <- data.frame(1:3) %>% structure(names = c(a)) 

    foo 
1 1 
2 2 
3 3 

鏈接是非常有用的,

a <- c("foo","data") 
bar 
2016-01-01 2016-01-02 2016-01-03 2016-01-04 2016-01-05 
     0.78  0.46  0.82  1.07  1.04 


a <- bar %>% as.data.frame() %>% tibble::rownames_to_column() %>% structure(names=a) 

      foo data 
1 2016-01-01 0.78 
2 2016-01-02 0.46 
3 2016-01-03 0.82 
4 2016-01-04 1.07 
5 2016-01-05 1.04 
相關問題