努力創造這樣的data.frame:如何使用存儲在變量中的名稱創建數據框時命名列?
a = "foo"
bar = data.frame(a = 1:3)
但列的名稱爲a
,不foo
:
> bar
a
1 1
2 2
3 3
列可以在創建data.frame之後改名,但如何輕鬆地通過只在同一個data.frame命令中指定一個變量的名稱?
努力創造這樣的data.frame:如何使用存儲在變量中的名稱創建數據框時命名列?
a = "foo"
bar = data.frame(a = 1:3)
但列的名稱爲a
,不foo
:
> bar
a
1 1
2 2
3 3
列可以在創建data.frame之後改名,但如何輕鬆地通過只在同一個data.frame命令中指定一個變量的名稱?
的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
我不認爲你可以在這裏做你想做的事情,因爲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
謝謝,我已經知道了這個解決方案。我正在尋找一條單線命令來做到這一點! – Ali
如果你堅持:'bar < - \''< - \'(data.frame(1:3),a)' –
@BlueMagister整潔,但我**真的**不推薦這個(&我得到印象你不是?!) –
嘗試:
a = structure(data.frame(1:3), names="foo")
> a
foo
1 1
2 2
3 3
的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
太棒了!感謝它。如果我們正在製作幾個表或向量的data.frame,並且我們希望其中的一部分被變量命名,那麼您是否知道如何執行此任務:data.frame(a = 1:3,b),而b是一張桌子,我們不打算改變b列的名字? – Ali
@AliSharifi,當你寫「* b是一個表*」時,你是指'table'還是'data.frame'?如果'b'是'data.frame',你可以使用'setNames(data.frame(1:3,b),c(a,names(b)))'(如果我正確理解你的問題)。 – A5C1D2H2I1M1N2O1R2T1
完美,謝謝。 – Ali