2017-08-31 60 views
3

有時,當從列表生成數據幀時,變量名爲「。」。默認。我怎樣才能在dplyr函數中引用這個變量,如果只是把變量名改爲更合適的話。在名爲「。」的變量上使用dplyr函數。

# Code that produces my data frame with "." as column name 
library(tidyverse) 

d <- data.frame(`.` = 1, row.names = "a") 

# Now my code fails because `.` is a poor column name for dplyr functions: 
d %>% select(model = rownames(.), outlier = `.`) 
+2

變化的變量名稱... –

+0

如果你打開更改列名稱爲B以上威廉姆斯建議,這篇文章包括了各種方法:https://stackoverflow.com/questions/6081439/changing-column-names-of-a-data-frame –

+0

'.'會導致更多的問題,而不僅僅是與dplyr。更改變量名稱。 –

回答

1

這實際上不是名稱列的問題。它是一種與在選擇引用rownames)問題(見

d <- data.frame(test = 1, row.names = "a") 
d %>% select(model = rownames(.), outlier = test) 

仍返回Error: Strings must match column names. Unknown columns: a

只使用

d <- data.frame(`.` = 1, row.names = "a") 
d %>% select(outlier = '.') 

將重命名列離羣

0

鑑於

d <- data.frame(`.` = 1, row.names = "a") 

基礎R解決方案

colnames(d) <- 'newname' 

Dplyr解決方案

d %>% rename(newname = '.') 
+0

使用dplyr解決方案,您可以重新命名和管道! –

+1

'setNames' /'purrr :: set_names'管道很好 – alistaire

+1

當我使用你的dplyr解決方案時,我得到「在captureDots中的錯誤(strict ='__quosured'):參數已經被評估過」 – Joe